プリンシパルに接続できるアプリケーションがありますが、フェイルオーバー中にミラーに接続できません。
(モデレーターへの注記: この質問が serverfault に適しているかどうか教えてください。serverfault よりもこの問題に似た質問を見つけたので、ここに投稿しました。)
フェイルオーバー後にアプリケーションがミラーに接続しようとすると、次のエラーが表示されます。
Named Pipes Provider: Could not open a connection to SQL Server [53].
Cannot open database "MY_DB_NAME" requested by the login. The login failed.
プリンシパルに最初に接続したときにミラー サーバーの名前がキャッシュされ、フェールオーバー中に使用されることと、接続文字列で指定したフェールオーバー パートナーがプリンシパルへの最初の接続に失敗した場合にのみ使用されることをよく知っています。 .
これは私が抱えている問題を明確に説明しています:
...しかし、SQL Browser サービスは実行中で、ミラーへの接続時に名前が解決されない理由がわかりません。
私は、実行されていない NetBIOS 名前解決を有効にするために実行されている必要があるサービスがあると想定しています。
Source Destination Protocol Length Info
10.200.3.111 10.200.5.255 NBNS 92 Name query NB SQL-02-SVR-<00>
質問 1:問題の原因は何ですか? ;-)
質問 2: (セキュリティ上の理由から) NetBIOS を有効にしたくありません。ミラー構成と接続文字列で IP アドレス (FQDN なし) を使用しています。プリンシパルに接続するときのミラー パートナーのキャッシュ動作を考えると、キャッシュされる値が名前ではなく IP アドレスになるように強制的に TCP/IP を使用する方法はありますか? SQL Server Browser/Computer Browser サービスを実行する必要がありますか?
構成:
- アプリはSDAC 6.5.9を使用するDelphi XE2です(これは、ミラーリングを使用する他のインストールで動作し、問題がないため、使用しているコンポーネントには関係ないと思います)
- SQL Server 2012 Enterprise は、証明書認証を使用する非ドメイン構成で、プリンシパル、ミラー、および監視に既定のインスタンスとしてインストールされます。
- すべてのマシンで Windows Server 2008 R2 SP1 64 ビット
- プリンシパル、ミラー、およびクライアント (アプリが実行されている場所) でファイアウォールが無効になっている
- プリンシパルとミラーで有効になっている TCP/IP と名前付きパイプ
- Mirror で実行されている SQL Server Browser サービス
- ミラーで実行されているコンピュータ ブラウザ サービス
- ミラーリングはミラーリング監視による自動フェールオーバー用に構成され、正常に動作します (ミラーとプリンシパルの間で問題なくフェールオーバーできます)
- クライアント マシンにインストールされた SQL Native Client 2012
- プリンシパルとミラーの両方に同じアプリ ログイン (同じ SID とユーザー権限) が存在する
- アプリ ログで確認された正しいサーバー、フェールオーバー パートナー、データベース名、ユーザー名、およびパスワード
- 接続文字列では、プリンシパル サーバーは 'tcp:10.200.3.15,1433' であり、フェールオーバー パートナーは 'tcp:10.200.3.16,1433' で、SQL ネイティブ クライアントを使用しています。
- クライアント マシンから両方のサーバーに ping を実行できます
- NetBIOS over TCP/IP は、アダプタの [WINS] タブ (ミラー マシンとクライアント マシン) で有効になっています。
他のいくつかのインストールでミラーリングを使用してアプリケーションを動作させることができましたが、これには困惑しています。