Sql-Server

SQLCMD 停留在“設置 textsize 4096”

  • May 5, 2017

我正在使用 SQL Data Compare 生成一個腳本來更新 QA 數據庫(SQL Server 2012)中的數據。

腳本大約 500mb,我GO每 100 行添加一個。當我啟動腳本時:

sqlcmd -E -S [server] -d [db] -i "[path to file]" 

連接已建立,但它卡在 sqlcmd 發出的第一個 sql 查詢上,而不是帶有錯誤消息的腳本:

設置文本大小 4096

我試圖讓它執行一個下午,只是為了看看我是否收到錯誤或超時等,但我什麼也沒得到,它只是卡在上面。我所能做的就是停止 sqlcmd (CTRL+C在控制台中)。

錯誤消息螢幕截圖

我嘗試使用 Management Studio 2008 和 2012。

有誰知道我為什麼會收到這個錯誤?

更新: 我嘗試使用 -o 執行它,但即使在 3 小時後也沒有寫入文件。這些是生成腳本的第一行:

SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT, QUOTED_IDENTIFIER, ANSI_NULLS, NOCOUNT ON
GO
SET DATEFORMAT YMD
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
-- Pointer used for text / image updates. This might not be needed, but is declared here just in case
DECLARE @pv binary(16)
[delete update or insert...]

我在你的腳本中看到,有一個

BEGIN TRANSACTION

然後是刪除/插入/更新。我猜如果你有很大的容量變化,這個事務可能需要更長的時間,這取決於你的目標數據庫的狀態,例如是否有衝突的會話阻塞了你目前的會話,或者你的目標數據庫的日誌文件增長設置為 1024KB。所以我建議你可以啟動 Profiler 來檢查啟動了哪個 sql 語句,同時檢查是否有阻塞問題。

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