web-dev-qa-db-ja.com

SQL Server ODBCミラー/フェイルオーバーパートナー

背景/コンテキスト

SQL Server 2000データベースをミラーリングされたSQL Server 2008 R2サーバーに移動し、監視と自動フェールオーバーを実行しています。これらのデータベースで実行されている.NetアプリケーションとAccessアプリケーションの両方があり、サーバーのフェールオーバーイベントでクライアントリダイレクトをテストしています。

「フェールオーバーパートナー」を接続文字列に追加した後、.Netアプリは正しく応答します。フェイルオーバー時にアプリは次のDBリクエストで失敗し、アプリを再起動するとミラーサーバーに移動します。

質問

ODBCを経由するAccessアプリケーションの場合、SQL Server Native Client 10.0ドライバー(標準ドライバーはミラーリングをサポートしていないように見えますか?)を使用して、設定でミラーサーバーを提供しようとしています。

ODBC Mirror Screen

ここでは、データベースとフェールオーバーサーバー名を指定しています。フェイルオーバーイベントで、アプリケーションを再起動した後でも、Accessアプリケーションがミラーサーバーにリダイレクトされないようです。 ODBC=ミラーサーバーに切り替えるためにここで行うべきことは他にありますか、それともミラーサーバー名を正しく指定していませんか?

5
Mike S.

ミラーリングでセットアップされたSQL Server 2005サーバーのペアに接続するAccess 2003アプリケーションを維持しています。アプリケーションの再起動後にアプリケーションがミラーに接続できるようにする次の接続文字列を使用します。

 
 Dim ws As Workspace 
 Dim db As Database 
 Dim a As Long 
 
 Set ws = DBEngine.CreateWorkspace( " MyODBCWorkspace "、" admin "、" "、dbUseJet)
 Set db = ws.OpenDatabase(" C:\ [pathtodatabase] "、True、False、" MS Access; ")
 = 0 To db.TableDefs.Count-1 
 Me.ProgressBar1.Value = a 
 DoEvents 
 If db.TableDefs(a).Connect "" Then 
 db.TableDefs(a).Attributes = TableDefAttributeEnum.dbAttachSavePWD 
 db.TableDefs(a).Connect = "ODBC; DRIVER = SQL Native Client; SERVER = [PrimaryServerName]; Trusted_Connection = Yes; APP = [MyAppName] ; WSID = [MyWorkstationName]; DATABASE = [SQLServerDatabase]; Failover_Partner = [MirrorSQLServerName]; "
 db.TableDefs(a).RefreshLink 
 End If 
 Next a 
 db.Close 
 ws.Close 
 Set db = Nothing 
 Set ws = Nothing 
 

ユーザーがダブルクリックしてAccess MDB/MDEを起動するように作成したVBランチャーアプリでこのコードを使用します。

または、これは、同じことを実行するために時々使用するDSNファイルの内容です。

 
 [ODBC] 
 DRIVER = SQL Native Client 
 APP = Microsoft Data Access Components 
 Trusted_Connection = Yes 
 SERVER = [ ServerFullyQualifiedDomainName] 
 FAILOVER_PARTNER = [MirrorFullyQualifiedDomainName] 
 DATABASE = [DatabaseName] 
 
 
3
Max Vernon