現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2012 または SQL Server 2014 で、スナップショット分離または読み取りコミットされたスナップショット分離レベルが有効になっているデータベースがある。
-
データベースに、複数列のクラスター化インデックスが含まれる空以外のテーブルが含まれている。 集合インデックスの先頭キーが NOT NULLに設定されています。
-
トランザクションを開始し、テーブルに列を追加します。 この列の値が更新されます。
-
NULL 値を許可するように、集合インデックスの先頭キーを変更します。
-
クラスター化インデックスの先頭キーに NULL 値を含む行を挿入し、そのトランザクションを中断します。
このシナリオでは、ロールバックによって、データベースの問題が発生している可能性があります。また、 DBCC CHECKDB REPAIR_ALLOW_DATA_LOSS コマンドを使って "修復できる" のみです。 また、次のエラー メッセージが表示されることがあります。
メッセージ3316、レベル21、状態2、行135データベース '%. * ls ' でログに記録された操作を元に戻すときに、エラーが発生しました。 S_LSN 行が見つかりませんでした。 完全バックアップからデータベースを復元するか、データベースを修復します。
解決方法
SQL Server 2014 の Service pack 情報
この問題を解決するには、SQL Server 2014 の Service Pack 1 を入手してください。
SQL Server 2014 Service Pack 1 (SP1) の詳細については、「 Sql server 2014 Service pack 1 で修正されたバグ」を参照してください。
SQL Server 2012 の Service pack 情報
この問題を解決するには、Microsoft SQL Server 2012 の最新の service pack を入手してください。詳細については、以下の記事の番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2755533 SQL Server 2012 の最新の Service Pack を入手する方法
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。