適用先
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

現象

Microsoft SQL Server 2012 または Microsoft SQL Server 2014 でマージレプリケーションを使用することを前提とします。 同期プロセスの一部として、merge agent はセッションでの新しい生成を行います。 デッドロックやタイムアウトなど、何らかの理由で、トランザクションがデッドロックの対象として選択されていて、トランザクションがロールバックされている場合、今後の世代の makings に MSinternal_makegeneration_inprog アプリケーションロックが発生する可能性があるため、前に説明したセッションが head ブロックとして表示されることがあります。

原因

ジェネレーション処理をセキュリティで保護するために使用されるアプリケーションロックは、セッションレベルのアプリケーションロックです。 生成処理中にデッドロックが検出されると、トランザクションのみがロールバックされますが、セッションはログオフされません。 セッションレベルのアプリケーションロックを解放するには、セッションをログオフする必要があります。 そのため、再試行ロジックの設計 (マージレプリケーションでの生成中にエラーが発生したときにセッションはログオフされません) が発生したため、最初のジェネレーションがデッドロックで失敗した場合、トランザクションのロールバック中に、取得したセッションロック (MSinternal_makegeneration_inprog) は解放されません。 これにより、まもなく発生する生成処理でロック要求のチェーンがブロックされます。 Head ブロックは、デッドロックで失敗する最初のジェネレーションの作成要求として表示されます。 修正前に、SQL Server は、生成処理が成功した場合に限りロックをクリアします。 デッドロックが発生した場合、セッションがログオフされる前に、孤立したセッションアプリケーションロックを残します。

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

状態

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

ヘルプを表示

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

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