KB2519358 - 修正: SQL Server 2008 または SQL Server 2008 R2 で CHANGETABLE 関数のlast_sync_version引数として bigint 値を渡すと、「整数値が範囲外です」というエラーが発生する

適用先
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express

Microsoft では、Microsoft SQL Server 2008 Service Pack 1 (SP1) と Microsoft SQL Server 2008 R2 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、新しいリリースの各リリースには、以前の SQL Server 2008 SP1 および SOL Server 2008 R2 の修正プログラム リリースに含まれていたすべての修正プログラムおよびセキュリティ修正プログラムが含まれています。

現象

たとえば次のようなシナリオを考えてみます。

  • SQL Server 2008 または SQL Server 2008 R2 のテーブルで変更の追跡を有効にします。

  • CHANGETABLE 関数と last_sync_version 引数を共に使用するクエリを実行すると、テーブルで発生した変更の追跡情報を返します。

  • bigint 値は、last_sync_version引数として渡されます。

たとえば、テーブルの変更追跡を有効にした後で、次のクエリを実行します。

SELECT * FROM CHANGETABLE(changes dbo.t1, 2222222222) as ct

このシナリオでは、クエリの実行は失敗し、次の情報が表示されます。

注

メッセージ 1080、レベル 15、状態 1、行 1
bigint 値が範囲外の整数値。

メモ

  • last_sync_version引数の型は bigint として定義されます。 したがって、クエリは正常に実行されることが期待されます。
  • bigint 値は 、last_sync_version引数として渡される bigint 値を表すプレースホルダーです。

解決策

累積的な更新プログラムの情報

SQL Server 2008 R2 Service Pack 1

この問題の修正プログラムは、SQL Server 2008 R2 Service Pack 1 の累積的な更新プログラム 1 で最初にリリースされました。 この累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2544793 SQL Server 2008 R2 Service Pack 1 の累積的な更新プログラム パッケージ 1 注: ビルドは累積的であるため、新しくリリースされた各修正プログラムには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2567616 SQL Server 2008 R2 Service Pack 1 以降にリリースされた SQL Server 2008 R2 のビルド

SQL Server 2008 Service Pack 2

この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積的な更新プログラム 4 で最初にリリースされました。 この累積的な更新プログラム パッケージの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

2527180 SQL Server 2008 Service Pack 2 の累積的な更新プログラム パッケージ 4 注: ビルドは累積的であるため、新しくリリースされた各修正プログラムには、以前の SQL Server 2008 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2402659 SQL Server 2008 Service Pack 2 SQL Server以降にリリースされた SQL Server 2008 ビルドは、特定の SQL Server Service Pack 用に作成されます。 SQL Server 2008 Service Pack 2 のインストールには、SQL Server 2008 Service Pack 2 修正プログラムを適用する必要があります。 既定では、1 つの SQL Server Service Pack で提供されているすべての修正プログラムは、次の SQL Server Service Pack に含まれています。

SQL Server 2008 R2

この問題の修正プログラムは、累積的な更新プログラム 7 で最初にリリースされました。 SQL Server 2008 R2 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2507770 SQL Server 2008 R2 の累積的な更新プログラム パッケージ 7 注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

981356 SQL Server 2008 R2 のリリース以降にリリースされた SQL Server 2008 R2 のビルド
この問題の修正プログラムは、累積的な更新プログラム 13 で最初にリリースされました。 SQL Server 2008 SP1 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2497673 SQL Server 2008 Service Pack 1 用の累積的な更新プログラム パッケージ 13
注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2008 SP1 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

970365 SQL Server 2008 Service Pack 1 以降にリリースされた SQL Server 2008 ビルド

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

回避策

この問題を回避するには、bigint 型の変数を作成し、その変数を CHANGETABLE 関数のlast_sync_version引数として渡します。 たとえば、次のクエリを正常に実行できます。

DECLARE @v3 bigint = 2222222222
SELECT * FROM CHANGETABLE(changes dbo.t1, @v3 ) as ct

追加情報

Transact-SQL の CHANGETABLE 関数の詳細については、次の MSDN (Microsoft Development Network) Web サイトを参照してください。

Transact-SQL の CHANGETABLE 関数に関する一般的な情報