Sql-Server

ADO 連接突然開始間歇性失敗

  • November 4, 2015

我有一個 Access 2010 前端連接到 SQL Server 2014 後端。我的機器上安裝了 SSMS 2014,一切正常。(執行 Win7 64 位和 64 位 Office。)

長話短說,在嘗試解決最終使用者問題時,我嘗試AccessDatabaseEngine_x64.exeMicrosoft安裝. (我最終從 downloads.com 獲得它,因為 MS 連結不會下載它——我應該把它當作一個線索。)

安裝它並沒有解決問題,所以我解除安裝並重新啟動了我的機器。現在,當我的 Access 應用程序嘗試通過此程式碼連接到 SQL Server 時:

Dim ConfigRS As New ADODB.Recordset
Dim SQLString As String
SQLString = "SELECT <fields> " & _
           "FROM <table> " & _
          "WHERE <condition>"
ConfigRS.Open Source:=SQLString, ActiveConnection:=CurrentProject.Connection

通常會收到此錯誤(伺服器名稱,以’c’開頭,塗黑),但有時它工作得很好:

在此處輸入圖像描述

我可以從 Access 中瀏覽連結的表,我可以毫無問題地從 SSMS 中的表中進行選擇,我只是無法通過程式碼打開 ADODB 查詢。

今天唯一改變的是AccessDatabaseEngine.

  • 有誰知道我需要刪除特定文件才能完成刪除所有痕跡AccessDatabaseEngine
  • 重新安裝 SSMS 以確保所有正確的驅動程序都安裝到位會更容易嗎?

由於 Access 可以成功連接到 SQL Server 並對其執行查詢,因此 Access 使用的連接字元串必須正確。另一方面,通過 ADO 建立的連接依賴於CurrentProject.Connection屬性,我們不知道它是什麼,並且意外失敗。裡面AccessDataBaseEngine_X64.exe似乎沒有 ODBC 驅動程序,無論是否AccessDataBaseEngine_X64.exe安裝 Access 都可以使用。所以Access使用的DSN沒有改變,所以問題一定是ADO中使用的連接字元串。

因此,如果您使用與 Access 相同的連接字元串,問題應該會消失。

至於為什麼它突然開始表現異常,我無法完全評論。但是微軟對該CurrentProject.Connection屬性的陳述可能會給你一個線索(相關部分以粗體顯示)。

使用 Connection 屬性來引用目前 Microsoft Access 項目 (.adp) 或 Access 數據庫對象的 Connection 對象。您可以使用 Connection 屬性呼叫 Connection 對象的方法,例如 BeginTrans 和 CommitTrans。

注意: ***Connection 屬性實際上返回對活動數據庫的 ActiveX 數據對象 (ADO) 連接副本的引用。因此,應用 Close 方法或嘗試通過 Connection 對象的方法或屬性更改連接不會影響 Microsoft Access 用於保持與目前數據庫的實時連接的實際連接對象。***由於 Connection 屬性是主要的 Shape 提供程序連接,因此在使用此屬性時需要以下資訊。

  1. MSDataShape 使用 Recordset.CursorLocation = adUseClient。不要在將記錄集分配給 CurrentProject.Connect 之前設置 CursorLocation。
  2. MSDataShape 使用 Recordset.CursorType = adOpenStatic。不要在將記錄集分配給 CurrentProject.Connection 之前設置 CursorType。
  3. MSDataShape 接受 Recordset.LockType = adLockOptimistic、adLockBatchOptimistic 或 adLockReadOnly(預設)。如果設置為 adLockPessimistic,則更改為 adLockOptimistic。
  4. 形狀連接不支持所有 ADOX 操作,特別是不支持 Columns.Properties 集合。
  5. 為了確保形狀連接正常工作,Command.CommandType 必須設置為 adCmdTable。

獎金:

  1. 如何知道 AccessDatabaseEngine_x64.exe 涉及哪些文件?(我很好奇!)

使用逆戟鯨

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