Applies ToSQL Server 2017 on Windows (all editions) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

現象

次のような状況で問題が発生します。

  • 2016 年と 2017 年SQL Server SQL CLR 関数があります。

  • CLR 関数は、EXECUTE AS ステートメントを呼び出すなど、偽装呼び出しを通じて Transact-SQL ステートメントを呼び出します。

このシナリオでは、実行が失敗し、次のエラー メッセージが表示されます。

メッセージ 6522、レベル 16、状態 1、プロシージャ PrcedureName、行 0 [バッチ開始行 LineNumber]

ユーザー定義ルーチンまたは集計 "ProcedureName" の実行中に、.NET Framework エラーが発生しました。

System.Data.SqlClient.SqlException: サーバー プリンシパル "LoginName" は、現在のセキュリティ コンテキストでデータベース "DatabaseName" にアクセスできません。

解決方法

この修正プログラムは、SQL Server 2017 の累積的な更新プログラム 1 に含まれています。

SQL Server 2016 のサービス パック情報

この問題は、SQL Serverの次の Service Pack で修正されています。

       SQL Server 2016 用 Service Pack 2

SQL Server 2017 ビルドについて

SQL Server 2017 の各新しいビルドには、以前のビルドにあったすべての修正プログラムとセキュリティ修正プログラムが含まれています。 SQL Server 2017 の最新ビルドをインストールすることをお勧めします。

サービス パックは累積的です。 Service Pack は累積的であり、 最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。 このサービス パックの最新の Service Pack と最新の累積的な更新プログラムを適用することをお勧めします。 最新のサービス パックをインストールする前に、以前のサービス パックをインストールする必要はありません。 最新の Service Pack と最新の累積的な更新プログラムの詳細については、次の記事の表 1 を参照してください。

SQL Server とそのコンポーネントのバージョン、エディション、および更新プログラムのレベルを確認する方法

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

関連情報

Microsoft がソフトウェア更新プログラムの説明に使用する 用語 について説明します。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。