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.".
「スケールが無効です」というのは、明らかに、ネイティブ クライアントが DATE データ型をリンク サーバーに返しているためです。これは SQL 2005 であるため、どうすればよいかわかりません。この同じクエリを 2008 サーバーに対して実行すると、問題なく動作します。SQL Server は、問題なく DATE および DATETIME データ型を比較できます。
これが私の質問です。Native Client が '2009-11-09' の DATE 値を '2009-11-09 00:00:00.000' の DATETIME に自動的に変換しない理由があるので、以前のバージョンのSQL Server はそれを詰まらせませんか?