我遇到了一个客户端的一个有趣的问题,我发送了一个.dll文件,里面有一个SQL语句。当客户端在Management Studio中运行此SQL查询时,查询运行没有问题并返回正确的结果,当他将其留给SQL Server以使用sp_executesql命令运行时收到以下错误:
varchar值的转换' 201101456914'溢出了一个int列。超出最大整数值。
(上面错误中的数字来自varchar列,为什么它试图将它转换为整数是一个谜)。当他在表中设置数据并以相同的方式运行查询时(使用sp_executesql)它完全正常。
以下是最终使用sp_executesql:
触发的查询exec sp_executesql N'SELECT OffBookAccountDescription, Value,
OffBookAccountId, DataAsOf FROM OffBook
WHERE OffBookCode = @code AND MemberNumber = @num',
N'@num int,@code char(1)',@num=5555,@code='U'
这会导致错误出现在视图中,但在具有完全相同数据的表上触发时则不会出现。上述错误消息中的数字对应于查询中的OffBookAccountId字段。
SQL Server在后端处理的视图是否与表格不同?