1. 程式人生 > >MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution的解決方法

MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution的解決方法

最近在用SSMS作業將MySQL中的資料遷移到SQL Server時作業報錯,報錯資訊如下:

訊息
已以使用者 WORKGROUP\iZw30eykry8q1hZ$ 的身份執行。 Microsoft ® SQL Server 執行包實用工具 Version 10.50.6000.34 for 64-bit 版權所有 © Microsoft Corporation 2010。保留所有權利。 開始時間: 2:07:41 錯誤: 2018-12-10 02:10:20.36 程式碼: 0xC0047062 源: house_sms_send_record 源 - 查詢 [1] 說明: MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution. —> MySql.Data.MySqlClient.MySqlException: Fatal error encountered attempting to read the resultset. —> MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. —> System.IO.IOException: 無法從傳輸連線中讀取資料: 無法立即完成一個非阻止性套接字操作。。 —> System.Net.Sockets.SocketException: 無法立即完成一個非阻止性套接字操作。 在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) — 內部異常堆疊跟蹤的結尾 — 在 MySql.Data.Common.MyNetworkStream.Read(Byte[] buffer, Int32 offset, Int32 count) 在 MySql.Data.MySqlClient.TimedStream.Read(Byte[] buffer, Int32 offset, Int32 count) 在 System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) 在 MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count) 在 MySql.Data.MySqlClient.MySqlStream.LoadPacket() — 內部異常堆疊跟蹤的結尾 — 在 MySql.Data.MySqlClient.MySqlStream.LoadPacket() 在 MySql.Data.MySqlClient.MySqlStream.ReadPacket() 在 MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) 在 MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId) 在 MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force) 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult() — 內部異常堆疊跟蹤的結尾 — 在 MySql.Data.MySqlClient.MySqlDataReader.NextResult() 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) — 內部異常堆疊跟蹤的結尾 — 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) 在 MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 在 Microsoft.SqlServer.Dts.Pipeline.DataReaderSourceAdapter.PreExecute() 在 Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPreExecute(IDTSManagedComponentWrapper100 wrapper) 錯誤結束 錯誤: 2018-12-10 02:10:20.36 程式碼: 0xC004701A 源: house_sms_send_record SSIS.Pipeline 說明: 元件“源 - 查詢”(1) 在執行前階段失敗,返回的錯誤程式碼為 0x80004005。 錯誤結束 DTExec: 已返回包執行 DTSER_FAILURE (1)。 開始時間: 2:07:41 完成時間: 2:10:20 佔用時間: 159 秒. 包執行失敗。. 該步驟失敗。

在這裡插入圖片描述

有時執行正常,有時執行報錯

在網上找了下,說可能原因是使用了變數,所以要設定引數Allow User Variables=True,大概意思是允許使用變數

具體設定如下:

在這裡插入圖片描述

在這裡插入圖片描述

設定好後就可以了,記錄分享下,希望能幫助到大家。