Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

現象

Microsoft SQL Server 2014、2016、2017で、文字列操作 (連結、CHAR または VARCHAR 列など) を実行するクエリがあるとします。 次のような状況で問題が発生します。

  • 列に割り当てられているさまざまな照合順序を使用して列を連結します。

  • これらの照合は、互いに互換性がありません。 たとえば、Latin1_General_CI_AI として対応する列を Latin1_General_BIN で連結しようとします。

  • 連結の最終的な結果は、照合の競合解決の問題として、特定の照合順序 ("database_default" を含む) に割り当てられます。

このシナリオでは、SQL Server が "照合順序なしによる無効な比較" という状態のリテールアサートを返すことがあります。次のようなエラーメッセージが表示されることがあります。

Location: typinfo. .cpp:LineNumber 式: false SPID: SPID プロセス ID: ProcessID 説明: 照合順序がないため、無効な比較が行われます。

Msg 3624、Level 20、State 1、Line LineNumber システムアサーションのチェックに失敗しました。 詳細については、SQL Server エラーログを確認してください。 通常、アサーションエラーはソフトウェアバグまたはデータの破損が原因で発生します。 データベースが破損していないかどうかを確認するには、DBCC CHECKDB の実行を検討します。 セットアップ時に Microsoft にダンプを送信することに同意した場合は、ミニダンプが Microsoft に送信されます。 更新プログラムは、最新の Service Pack またはテクニカルサポートの修正プログラムで Microsoft から提供されている場合があります。

Msg 596、Level 21、State 1、Line LineNumber セッションが強制終了状態にあるため、実行を続行できません。

Msg 0、Level 20、State 0、Line LineNumber

現在のコマンドで重大なエラーが発生しました。  結果は破棄する必要があります。

原因

クエリの最適化ステージでは、SQL Server はクエリのさまざまな段階 (連結など) の中間結果を cardinalities 計算します。 照合順序の競合解決は最後に行われるため、クエリオプティマイザーはそれを認識していないため、重複した照合順序での入力で連結基数の計算を実行しようとします。

解決方法

この問題は、SQL Server の次の累積的な更新プログラムで修正されています。

       SQL Server 2016 SP1 の累積更新プログラム8  

       SQL Server 2017 の累積更新プログラム4

       SQL Server 2014 SP2 の累積更新プログラム9

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。

SQL Server 2016 の最新の累積的な更新プログラム

SQL Server 2017 の最新の累積的な更新プログラム

SQL Server 2014 の最新の累積的な更新プログラム

状態

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

関連情報

ソフトウェアの更新を説明するために Microsoft が使用する 用語について説明します。

ヘルプを表示

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

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

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