Sql-Server

將 MySQL 8 遷移到 SQL Server 2019 時出錯

  • February 13, 2022

使用 SQL Server 遷移助手將數據庫從 MySQL 8.0 遷移到 SQL Server 2019 時出現錯誤。

錯誤資訊:

ExecuteReader 需要一個打開且可用的連接。連接的目前狀態為關閉。

同樣的錯誤發生在我 95% 的表上,並且發生在我創建模式並執行遷移數據過程之後。

有什麼想法嗎?

我通過一些步驟解決了這個問題。

我的場景是 MySQL 到 SQL Server,我假設遷移過程試圖讀取 MySQL 時發生了這個錯誤 ExecuteReader。因此,在 MySQL(Windows 安裝)my.ini 配置中,我進行了更改,將值設置在最大值的邊緣。

table_open_cache
tmp_table_size
thread_cache_size
max_allowed_packet
innodb_open_files

在 SQL Server 遷移助手中,我配置了Tools > Project Settings > Migration > Data Migration Timeout in minutes = 1000我有 20GB 的表,預設超時為 15 分鐘,這導致了下降錯誤。在Tools > Default Project Settings > Synchronization = 1000 我已經將 MySQL 和 SQL Server 部分中的 Query Timeout 更改為 1000。這解決了問題。

我最近一直在使用 SSMA(DB2 到 SQL Server),但我沒有遇到這樣的錯誤。我的建議是,在執行任何 SQL 查詢之前,請確保您的應用程序與數據庫的連接已打開。

該錯誤非常清楚,顯然是C#提供的自定義錯誤:

  1. 如果您超過請求之間約定的超時時間,SQL 伺服器將掛斷您。
  2. 如果您不在本地,則連接可能會中斷並且可能需要重新建立。
  3. 您可能沒有成功連接第一次(已超過最大連接數)。

嘗試在使用 SSMA 時使用ping該選項打開終端和遠端伺服器。-t

否則,您顯然處於這種情況:

  1. https://stackoverflow.com/questions/38266349/mysql-5-6-to-mssql-server-2014-migration-executereader-requires-an-open-and-av/38266748
  2. 將大表從 mySQL 遷移到 SQL Server 2012 時出錯

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