現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2008 R2 にリンク サーバーがあります。
-
リンク サーバーには SMALLDATETIME 型の列を持つテーブルがあります。
-
INSERT ステートメントまたは INSERT INTO ステートメントを実行して、DATETIME 型データを含むレコードをテーブルに挿入します。
このシナリオでは、ステートメントは失敗します。 さらに、以下のエラー メッセージが表示されます。
リンク サーバー "LinkServerName " の OLE DB プロバイダー "SQLNCLI10" は、"複数ステップ OLE DB 操作によってエラーが生成されました" というメッセージを返しました。 使用可能な場合は、各 OLE DB 状態値を確認します。 作業は行われませんでした。メッセージ 7344、レベル 16、状態 1、行 1 列 "ColumnName" のため、リンク サーバー "LinkServerName" の OLE DB プロバイダー "SQLNCLI10" がテーブル "TableName" に挿入できませんでした。 データ値がプロバイダーによって使用されるデータ型をオーバーフローしたため、変換に失敗しました。
原因
この問題は、SQL Serverのデータ型マッピングの問題が原因で発生します。
解決方法
累積的な更新プログラムの情報
SQL Server 2008 R2 Service Pack 2
この問題の修正プログラムは、累積的な更新プログラム 3 で最初にリリースされました。 SQL Server 2008 R2 Service Pack 2 のこの累積的な更新プログラム パッケージを取得する方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2754552 SQL Server 2008 R2 Service Pack 2Note 用の累積的な更新プログラム パッケージ 3 ビルドは累積的であるため、各新しい修正プログラム リリースには、以前のSQL Server 2008 R2 Service Pack 2 の修正プログラム リリースに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2730301 SQL Server 2008 R2 Service Pack 2 のリリース後にリリースされた SQL Server 2008 R2 ビルド
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
回避策
この問題を回避するには、次のいずれかの方法を使用します。
-
ステートメント内の SMALLDATETIME 型に DATETIME 型データをキャストします。
-
SMALLDATETIME 型列をリンク サーバーの DATETIME 型に変更します。