- - PR -
リンクサーバがミラー構成の時、Failover側にも接続できるようにする方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-18 23:36
サーバ機が3台あり、それぞれ、DB1svr,DB2svr,WWWsvrとします。
いずれも、Windows Server 2003 Standardです。 DB1svr,DB2svrには、SQL Server 2005 Standardをインストール しており、インスタンス名はINS1とします。ここにTESTDBという DBを作成し、ミラーリング構成としています。 直接TESTDBに、Accessや、VBで作成したプログラムからは、 Failoverしても、そのときのプリンシパルに接続され、 ミラーリングは正しく動いています。 WWWsvrにSQL Server 2005 Expressをインストールして、 クライアントからは、WWWsvr経由で、TESTDBにアクセスさせる ようにしたいのですが、Failoverすると、接続に失敗して しまいます。 以下は、WWWsvr上で、SQL Server Management Studio Express からクエリを実行した結果です。 1.OPENDATASOURCEを実行した結果 select * from OPENDATASOURCE ( 'SQLNCLI', 'server=DB1svr.local\\INS1; FailoverPartner=DB2svr.local\\INS1; database=TESTDB; UID=**; PWD=***; Network=dbmssocn;') .INS1.dbo.test01 DB1svrがプリンシパルのとき、正しく結果を得られますが、DB2svr だと、エラーになります。 2.リンクサーバとして登録しクエリを実行した結果 まず、下記コマンドで、リンクサーバを登録します。 EXEC sp_addlinkedserver @server = 'TEST012', @srvproduct = '', @datasrc = 'DB1svr.local\\INS1' , @provider = 'SQLNCLI', @provstr = 'Database=TESTDB; FailoverPartner=DB2svr.local\\INS1; UID=***; PWD=***' 下記を実行すると、DB2svrがプリンシパルのとき、接続に失敗します。 select * from TEST012.ins1.dbo.test01; メッセージは、下記のような形です。 ============================================================== --リンク サーバー "TEST012" の OLE DB プロバイダ "SQLNCLI" から、メッセージ "ログイン タイムアウトが時間切れになりました" が返されました。 --リンク サーバー "TEST012" の OLE DB プロバイダ "SQLNCLI" から、メッセージ "サーバーへの接続確立時にエラーが発生しました。接続先が SQL Server 2005 である場合は、既定の設定では SQL Server がリモート接続を許可していないことが原因である可能性があります。" が返されました。 --メッセージ 65535、レベル 16、状態 1、行 0 --SQL ネットワーク インターフェイス : 指定された Server/Instance の位置を特定しているときにエラーが発生しました [xFFFFFFFF]. --メッセージ 18456、レベル 14、状態 1、行 1 --ユーザー 'sa' はログインできませんでした。 --メッセージ 4060、レベル 11、状態 1、行 1 --このログインで要求されたデータベース "SORA" を開けません。ログインに失敗しました。 (18456,4060を7回繰り返し。) --リンク サーバー "TEST012" の OLE DB プロバイダ "SQLNCLI" から、メッセージ "接続文字列の属性が正しくありません。" が返されました。 ============================================================== 1,2ともに、DB1svr,DB2svrを逆にしても、Failover側に接続してくれ ないので、接続文字列の指定だけの問題のような気もしています。 MSDNなどを見ると、対応は出来そうに思えますが、具体的なサンプルを 見つけられないため、具体例をお教えいただけるとありがたいと 思います。 よろしくお願いします。 |
1