SQL Server 2008 R2がインストールされています。 3つのインスタンスが含まれています。
これらはすべてネットワークサービスとしてログオンします。
デフォルトのインスタンスはプリンシパルサーバーです最初のインスタンスはミラーです2番目のインスタンスは監視サーバーです
最初に、主データベースの完全バックアップとトランザクションログバックアップを作成しました。同じデータベース名を維持することで最初のインスタンスに復元し、リカバリ状態はリカバリ不可
最後に、ミラーリングを開始したところ、以下の2つのエラーメッセージが表示されました。
基本的な接続テストをいくつか試してください。
コマンドラインから:
netstat -an
私のサーバーでは、5022がリッスンしていることがわかります。
次に、Telnet経由でこれらのポートに接続できることを確認します
telnet fully-qualified-server-name 5022
ミラーリングプロパティGUIのNoteセクションの「ウィットネスフィールド」のすぐ下で言及されているように、サーバー名は完全修飾TCPアドレスである必要があります。
黒い画面が表示されるはずです。この例では、接続に失敗するような名前を選択しました。 「接続を開けませんでした」と表示される場合は、ミラー、プリンシパル、およびウィットネスとして定義されているサーバーに到達できないか、正しい名前を使用していません。
Telnetクライアントは、Windows 2008の[機能]に追加できます。
Windows 2008では、[コンピューター]を右クリックすると、完全なコンピューター名が表示されます。コマンドラインからもpingできるはずです。例:ping myservername
更新
各SQL Serverインスタンスで次のクエリを実行し、結果を質問に入力してください。これらのトラブルシューティングのヒントの多くは、以下から取得されます。 http://msdn.Microsoft.com/en-us/library/ms189127.aspx
TCPエンドポイントを表示
SELECT type_desc, port FROM sys.tcp_endpoints;
ミラーリングエンドポイントのステータスを表示します
SELECT state_desc FROM sys.database_mirroring_endpoints;
ROLEが正しいことを確認してください
SELECT role FROM sys.database_mirroring_endpoints;
エンドポイントへのアクセス許可を表示します
SELECT EP.name, SP.STATE,
CONVERT(nvarchar(38), suser_name(SP.grantor_principal_id))
AS GRANTOR,
SP.TYPE AS PERMISSION,
CONVERT(nvarchar(46),suser_name(SP.grantee_principal_id))
AS GRANTEE
FROM sys.server_permissions SP , sys.endpoints EP
WHERE SP.major_id = EP.endpoint_id
ORDER BY Permission,grantor, grantee;
GO
他のサーバーインスタンスからのサービスアカウントのログインには、CONNECT権限が必要です。他のサーバーからのログインにCONNECT権限があることを確認してください。エンドポイントのCONNECT権限を持つユーザーを判別するには、各サーバーインスタンスで次のTransact-SQLステートメントを使用します。
出力例:
name STATE GRANTOR PERMISSION GRANTEE
TSQL Local Machine G sqladmin CO public
TSQL Named Pipes G sqladmin CO public
TSQL Default TCP G sqladmin CO public
TSQL Default VIA G sqladmin CO public
Mirroring G SERVERNAME\Grantor CO SERVERNAME\Grantee
許可者は(CO)接続許可を割り当てたアカウント、許可者は接続許可を持つアカウントです
コマンドラインからipconfig /all
を実行し、ホスト名が返す内容を確認します。