我将数据库从SQL Server 2000转移到SQL Server 2008 R2 SP2,除了一个存储过程外,其他都正常工作。错误出现在以下代码段中:
declare @Dates table (
ForDate smalldatetime,
DayStart int,
PRIMARY KEY CLUSTERED (ForDate)
)
INSERT INTO @Dates
SELECT M.ForDate
FROM @Master M
GROUP BY M.ForDate
错误信息如下:
我发现这个错误是因为在Msg 213, Level 16, State 1, Procedure REP_Media, Line 115
列名或列数与表定义不匹配。
@Dates
表变量中没有为DayStart
列提供值。我可以在内部选择中添加NULL,所有内容都可以正常工作。但是,相同的过程适用于SQL Server 2000,而不适用于SQL Server 2008 R2 SP2,为什么?应该采取什么措施以使其正常运行,而不改变过程(一些服务器选项或其他解决方案)?
我尝试在过程定义和数据库选项中使用
SET ANSI_NULL_DFLT_ON ON
,但没有任何成功。