Sql-Server
SQL Server ODBC 鏡像/故障轉移夥伴
背景/上下文
我們正在將我們的 SQL Server 2000 數據庫移動到具有見證和自動故障轉移的鏡像 SQL Server 2008 R2 伺服器。我們有 .Net 和 Access 應用程序在這些數據庫之外執行,並且正在測試伺服器故障轉移事件上的客戶端重定向。
在我將“故障轉移夥伴”添加到連接字元串後,.Net 應用程序正確響應。在故障轉移時,應用程序將在下一個數據庫請求時失敗,然後在我們重新啟動應用程序時移動到鏡像伺服器。
題
對於通過 ODBC 的 Access 應用程序,我們嘗試使用 SQL Server Native Client 10.0 驅動程序(看起來標準驅動程序不支持鏡像?)並在設置中提供鏡像伺服器。
我在這裡指定數據庫和故障轉移伺服器名稱。在故障轉移事件中,即使在應用程序重新啟動後,Access 應用程序似乎也不會重定向到鏡像伺服器。我還應該在這裡做些什麼來強制 ODBC 切換到鏡像伺服器,還是我沒有正確指定鏡像伺服器名稱?
我維護一個 Access 2003 應用程序,該應用程序連接到一對帶有鏡像的 SQL Server 2005 伺服器設置。我使用以下連接字元串,它允許應用程序在應用程序重新啟動後連接到鏡像:
暗淡作為工作區 將 db 作為數據庫 暗淡一長 設置 ws = DBEngine.CreateWorkspace("MyODBCWorkspace", "admin", "", dbUseJet) 設置 db = ws.OpenDatabase("C:\[pathtodatabase]", True, False, "MS Access;") 對於 a = 0 到 db.TableDefs.Count - 1 Me.ProgressBar1.Value = a 做事件 如果 db.TableDefs(a).Connect "" 那麼 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 萬一 下一個 db.關閉 ws.關閉 設置 db = 無 設置 ws = 無
我在創建的 VB 啟動器應用程序中使用此程式碼,使用者點兩下該應用程序即可啟動 Access MDB/MDE。
或者,這是我們有時用來完成相同事情的 DSN 文件的內容:
[ODBC] 驅動程序=SQL 本機客戶端 APP=Microsoft 數據訪問組件 Trusted_Connection=是 SERVER=[ServerFullyQualifiedDomainName] FAILOVER_PARTNER=[MirrorFullyQualifiedDomainName] DATABASE=[數據庫名稱]