2017年5月27日土曜日

【SQLServer】フェールオーバ時のトランザクション

 SQL Server 2012 ミラーリング構成(レプリケーションやAlways Onではないです)で、フェールオーバした際に、DBアクセス中のセッションのトランザクションは、再実行が必要なのか?MSのサイトが分かりずらいが、「トランザクションがコミットされたかロールバックされたかはっきりしない場合」(Exceptionをログ記録してない場合のことかな?)とあるが、ロールバックと記載ある以上、アプリケーション側で新プリンシパルに対し、再度更新&コミットしなければならない…、気がする。

データベース ミラーリング セッションへの再接続
データベース ミラーリングのフェールオーバーなどの理由でデータベース ミラーリング セッションに対して確立された接続が失敗し、アプリケーションが最初のサーバーに再接続を試みると、データ アクセス プロバイダーは、クライアントのキャッシュに保存されたフェールオーバー パートナー名を使用して再接続を試みる場合があります。 ただし、再接続は自動的には行われず、 アプリケーションではエラーを検出することになります。 その後、アプリケーションは失敗した接続を閉じて、同じ接続文字列属性を使用して新しい接続を開く必要があります。 この時点で、データ アクセス プロバイダーがフェールオーバー パートナーに接続をリダイレクトします。 この名前で識別されるサーバー インスタンスが現在のプリンシパル サーバーの場合は、通常、接続試行は成功します。 トランザクションがコミットされたかロールバックされたかはっきりしない場合、アプリケーションでは、スタンドアロンのサーバー インスタンスに再接続するときと同じように、トランザクションの状態を確認する必要があります。



●検証予定
不安なので実際に検証してみる【予定】。

●マシン構成
  • VM1
    • Windows10Pro
    • SQLServer2012Standard試用版
  • VM2
    • Windows10Pro
    • SQLServer2012Standard試用版
  • 実機
    • ESXi 6.5無償版

0 件のコメント:

コメントを投稿