背景/コンテキスト
SQL Server 2000データベースをミラーリングされたSQL Server 2008 R2サーバーに移動し、監視と自動フェールオーバーを実行しています。これらのデータベースで実行されている.NetアプリケーションとAccessアプリケーションの両方があり、サーバーのフェールオーバーイベントでクライアントリダイレクトをテストしています。
「フェールオーバーパートナー」を接続文字列に追加した後、.Netアプリは正しく応答します。フェイルオーバー時にアプリは次のDBリクエストで失敗し、アプリを再起動するとミラーサーバーに移動します。
質問
ODBCを経由するAccessアプリケーションの場合、SQL Server Native Client 10.0ドライバー(標準ドライバーはミラーリングをサポートしていないように見えますか?)を使用して、設定でミラーサーバーを提供しようとしています。
ここでは、データベースとフェールオーバーサーバー名を指定しています。フェイルオーバーイベントで、アプリケーションを再起動した後でも、Accessアプリケーションがミラーサーバーにリダイレクトされないようです。 ODBC=ミラーサーバーに切り替えるためにここで行うべきことは他にありますか、それともミラーサーバー名を正しく指定していませんか?
ミラーリングでセットアップされた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]