ADO 連接突然開始間歇性失敗
我有一個 Access 2010 前端連接到 SQL Server 2014 後端。我的機器上安裝了 SSMS 2014,一切正常。(執行 Win7 64 位和 64 位 Office。)
長話短說,在嘗試解決最終使用者問題時,我嘗試
AccessDatabaseEngine_x64.exe
從Microsoft安裝. (我最終從 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 提供程序連接,因此在使用此屬性時需要以下資訊。
- MSDataShape 使用 Recordset.CursorLocation = adUseClient。不要在將記錄集分配給 CurrentProject.Connect 之前設置 CursorLocation。
- MSDataShape 使用 Recordset.CursorType = adOpenStatic。不要在將記錄集分配給 CurrentProject.Connection 之前設置 CursorType。
- MSDataShape 接受 Recordset.LockType = adLockOptimistic、adLockBatchOptimistic 或 adLockReadOnly(預設)。如果設置為 adLockPessimistic,則更改為 adLockOptimistic。
- 形狀連接不支持所有 ADOX 操作,特別是不支持 Columns.Properties 集合。
- 為了確保形狀連接正常工作,Command.CommandType 必須設置為 adCmdTable。
獎金:
- 如何知道 AccessDatabaseEngine_x64.exe 涉及哪些文件?(我很好奇!)
使用逆戟鯨