Sql-Server

SSMA for Access - 遷移助手嚮導在連結表中失敗

  • July 1, 2021

將 SQL Server 遷移助手與遷移嚮導一起用於 Access 時,將 Access (2016) 數據庫轉換為 SQL Server Express (2017) 一切順利,直到我進入連結表步驟。此處出現 SQL Server 連接對話框:

sql server 連接對話

我輸入用於創建表的相同憑據。我的理解是,這個對話似乎允許使用不同的 SQL Server 登錄名和 Access,所以這裡可能沒有什麼不尋常的地方。但後來我收到以下錯誤:

錯誤

Connection failed:
SQLState: '01000'
SQL Server Error: 772
[Microsoft][ODBC SQL Server Driver]
[DBNETLIB]ConnectionOpen (SECDoClientHandshake()).
Connection failed:
SQLState: '08001'
SQL Server Error: 18
[Microsoft][ODBC SQL Server Driver]
[DBNETLIB]SSL Security error

我已經嘗試過使用和不使用相同的錯誤加密連接,所以它看起來不像是 SSL 錯誤。

我安裝了四個 SQL Server ODBC 驅動程序:

  • 適用於 SQL Server 的 ODBC 驅動程序 11
  • 適用於 SQL Server 的 ODBC 驅動程序 13
  • SQL 伺服器
  • SQL Server 本地客戶端 11.0

如果我使用 ODBC 數據源管理器創建連接,我可以使用 SQL Server 驅動程序產生相同的錯誤。其他三個工作正常。因此,似乎 SSMA 正在使用SQL Server驅動程序(四個驅動程序中最舊的)而不是SQL Server Native Client,這應該是 SSMA 的依賴項。

通過執行以下操作,我能夠解決該問題:

  1. 允許遷移助手完成(連結轉換錶失敗)
  2. 手動將 MySQL 連結表添加到 Access
  3. 打開Access,選擇外部數據->新建數據源->從其他源->ODBC數據庫
  4. 通過創建連結表選擇連結到數據源
  5. 選擇您的 ODBC 驅動程序文件或源
  6. 輸入憑據
  7. 選擇要連結的表
  8. 刪除 Access 表並重命名 MySQL 表
  9. 從表列表中,右鍵點擊第一個訪問表並刪除
  10. 右鍵點擊對應的 MySQL 表並重命名以完全匹配已刪除的 Access 表
  11. 對要重新映射的每個表重複

如果您重命名每個 MySQL 表以匹配已刪除的 Access 表,則所有查詢都應該有效。

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