错误 402 可能发生在数据库兼容级别110 或更高级别:
ALTER DATABASE testdb
SET COMPATIBILITY_LEVEL = 110;
GO
USE testdb;
DECLARE @datetime DATETIME = '1900-01-01T00:00:00';
DECLARE @time TIME = '11:11:11';
SELECT @datetime + @time;
消息 402,第 16 层,状态 1,第 7 行
数据类型 datetime 和 time 在 add 运算符中不兼容。
但是,它不会出现在 100 或更低:
ALTER DATABASE testdb
SET COMPATIBILITY_LEVEL = 100;
GO
USE testdb;
DECLARE @datetime DATETIME = '1900-01-01T00:00:00';
DECLARE @time TIME = '11:11:11';
SELECT @datetime + @time;
1900-01-01 11:11:11.000
您的主数据库可能具有兼容性级别 110 (SQL Server 2012),而您测试的其他数据库的兼容性级别较低。(例如,由于使用以前版本的 SQL Server 的备份进行恢复)
注意:此更改似乎没有记录在案。我已经打开MicrosoftDocs/sql-docs#7152来记录它。