我喜欢 SQL Server 2008 中的新 DATE 数据类型,但是当我将 DATE 字段与链接服务器(在本例中为 SQL 2005)上的 DATETIME 字段进行比较时,如下所示:
DECLARE @MyDate DATE
SET @MyDate = CONVERT(DATE, GETDATE())
SELECT *
FROM MySQL2005LinkedServer.SomeDB.dbo.SomeTable
WHERE SomeDatetimeField < @MyDate
我收到此错误:
OLE DB provider "SQLNCLI10" returned message "Unspecified error".
OLE DB provider "SQLNCLI10" returned message "The scale is invalid.".
“比例无效”显然是因为 Native 客户端正在将 DATE 数据类型传递回链接服务器,并且由于它是 SQL 2005,它不知道如何处理它。对 2008 服务器运行相同的查询就可以正常工作 - SQL Server 能够毫无问题地比较 DATE 和 DATETIME 数据类型。
这是我的问题 - Native Client 是否有原因不会自动将“2009-11-09”的 DATE 值转换为“2009-11-09 00:00:00.000”的 DATETIME,以便之前版本的SQL Server 不会窒息吗?