KB2498818 - 修正: SQL Server 2005、SQL Server 2008、または SQL Server 2008 R2 のリンク サーバー上のシノニムを使用するユーザー定義関数またはビューに対してクエリを実行するとエラー 7359 が発生する

適用先
Microsoft SQL Server 2005 Service Pack 3 Microsoft SQL Server 2005 Service Pack 4 SQL Server 2008 Service Pack 2 Microsoft SQL Server 2005 SQL Server 2008 SQL Server 2008 R2

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

この記事で説明されている修正プログラムは、次のバージョンの SQL Server で利用できます。

  • Microsoft SQL Server 2005 Service Pack 3 (SP3)
  • Microsoft SQL Server 2005 Service Pack 4 (SP4)
  • Microsoft SQL Server 2008 Service Pack 1 (SP1)
  • Microsoft SQL Server 2008 Service Pack 2 (SP2)

現象

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

  • Microsoft SQL Server 2005、Microsoft SQL Server 2008、または Microsoft SQL Server 2008 R2 を実行しているコンピューターにリンク サーバーを作成します。 リンク サーバーがリモート サーバー上の OLE DB データ ソースを参照している。

  • リンク サーバー上のテーブルのシノニムを作成します。

  • シノニムを使用するユーザー定義関数を作成するか、シノニムを使用するビューを作成します。 次に、ユーザー定義の関数またはビューに対してクエリを実行します。

    注: クエリを実行すると、実行プランがキャッシュされます。

  • リモート サーバーで操作を実行して、リンク サーバー上のテーブルのスキーマ バージョンを更新します。 たとえば、リモート サーバー上のテーブルのインデックスを再構築して、リンク サーバー上のテーブルのスキーマ バージョンを更新します。

  • ユーザー定義の関数またはビューに対して別のクエリを実行する。

この場合に、次のようなエラー メッセージが表示されます。

注

サーバー: メッセージ 7359、レベル レベル番号、状態 状態番号、行 番号
リンク サーバー "リンク サーバー名" の OLE DB プロバイダー "プロバイダー名" は、テーブル "リンク テーブル名" のコンパイル時 ("コンパイル時") と実行時 ("実行時") の間のスキーマ バージョンの変更を報告しました。

注: プロバイダー名 は、OLE DB プロバイダーの名前を表すプレースホルダーです。 リンク テーブル名 は、リンク サーバー上のテーブルの名前を表すプレースホルダーです。

原因

この問題は、既存の実行プランが正しくクリアされていないために発生します。 これにより、2 番目のクエリの実行時にユーザー定義関数またはビューが再コンパイルされるため、スキーマのバージョンが変更されます。 このため、このエラーが発生します。

解決策

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

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 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 のビルド

SQL Server 2005 SP3 の場合

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

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

960598 SQL Server 2005 SP3 以降にリリースされた SQL Server 2005 ビルド

SQL Server 2005 SP4 の場合

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

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

937137 SQL Server 2005 SP4 以降にリリースされた SQL Server 2005 ビルド

SQL Server 2008 SP1 の場合

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

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

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

SQL Server 2008 SP2 の場合

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

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

2402659 SQL Server 2008 SP2 以降にリリースされた SQL Server 2008 ビルド

状態

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

追加情報

Transact-SQL を使用してシノニムを作成する方法の詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。

Transact-SQL を使用してシノニムを作成する方法