Sql-Server

SQL Server ODBC 鏡像/故障轉移夥伴

  • September 23, 2012

背景/上下文

我們正在將我們的 SQL Server 2000 數據庫移動到具有見證和自動故障轉移的鏡像 SQL Server 2008 R2 伺服器。我們有 .Net 和 Access 應用程序在這些數據庫之外執行,並且正在測試伺服器故障轉移事件上的客戶端重定向。

在我將“故障轉移夥伴”添加到連接字元串後,.Net 應用程序正確響應。在故障轉移時,應用程序將在下一個數據庫請求時失敗,然後在我們重新啟動應用程序時移動到鏡像伺服器。

對於通過 ODBC 的 Access 應用程序,我們嘗試使用 SQL Server Native Client 10.0 驅動程序(看起來標準驅動程序不支持鏡像?)並在設置中提供鏡像伺服器。

ODBC鏡像螢幕

我在這裡指定數據庫和故障轉移伺服器名稱。在故障轉移事件中,即使在應用程序重新啟動後,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=[數據庫名稱]

引用自:https://dba.stackexchange.com/questions/23076