- PR -

SQLServer2005でのミラーリング自動リダイレクトについて

1
投稿者投稿内容
ara
会議室デビュー日: 2006/06/13
投稿数: 18
投稿日時: 2006-12-06 10:13
お世話になります。さっそくですがSQLServerのミラーリングについて教えていただきたく書き込みしました。
SQLServerは2005sp1を使用しておりASP.NETでのWebシステムを構築しています。今回データベールのミラーリングを行いと思っています。テスト的にサーバ2台(ミラーサーバと監視サーバは同一サーバにしています)でミラー設定をしてみました。手動では問題なくミラー側への切り替えができました。そこで今度は自動リダイレクトを実現したいと思い、web.configファイルにファエイルオーバーの接続文字列パラメータを記述してみたのですが、記述設定がまずいようで、ミラーへの自動リダイレクトどころか、正常にプリンシパルが動作している時でもデータベースへの接続ができません。web.configには下記のように記述してみました。

  <add key="ConnectString" value="user id=DBxxxx;data source=PrincipalSvr;Failover Partner=MirrorSvr;initial catalog=DBxxxx;password=xxxx1234"/>

またミラーサーバへ切り替わった時、接続したいデータベースへのユーザ設定が自動で復元されません。手動で設定しなおせば問題なくミラーサーバ側のデータベースに接続できるのですが、これを自動化することは可能でしょうか?

データベースミラーリングの自動リダイレクトを実現するために、
 @web.configの接続文字列パラメータの記述方法
 Aデータベースへの自動ユーザ設定
この2点についてご教授いただければと思います。よろしくお願いいたします。
こばさん
大ベテラン
会議室デビュー日: 2004/03/17
投稿数: 147
投稿日時: 2006-12-18 12:11
 私もミラーリングで悪戦苦闘しています。

 プリンシパルに接続できない件ですが、Connection.Open 時にエラーは何が出ていますか?

 あと切り替わりですが、アプリケーション側で Connection を.Close/.Open し直す必要があります。
 サーバー側はシームレスに切り替わるのですが、アプリケーション側では切り替えを意識する必要があります。
ara
会議室デビュー日: 2006/06/13
投稿数: 18
投稿日時: 2006-12-19 17:54
こばさん、こんにちは。レスありがとうございます。また返事が遅くなりすみません。

エラーの内容ですが、‘キーワードはサポートされていません:failover partner’と表示されました。トレースの内容は以下のようなものでした。

[ArgumentException: キーワードはサポートされていません : 'failover partner']
System.Data.Common.DBConnectionString.ParseInternal(Char[] connectionString, UdlSupport checkForUdl, NameValuePair& keychain) +1133
System.Data.Common.DBConnectionString..ctor(String connectionString, UdlSupport checkForUdl) +114
System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +13
System.Data.SqlClient.SqlConnectionString.ParseString(String connectionString) +96
System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +11
System.Data.SqlClient.SqlConnection..ctor(String connectionString) +158
KpKintai.Common.ComFunc.SqlDlookup(String expr, String domain, String criteria, Int64 lErrNumber, String lErrMsg)
KpKintai.Logon.zGetKanriBumon()
KpKintai.Logon.Initialize()
KpKintai.BasePage.Page_Load(Object sender, EventArgs e)
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731

やはりアプリケーション側では一工夫必要になるのですね…。なにぶん、SQLServerも.netも初心者なのでかなりの難題です。

1

スキルアップ/キャリアアップ(JOB@IT)