2008-10-22 81 views
9

我有一個很大的腳本文件(接近300MB,未來可行),我試圖運行。在Gulzar對我的question about it的回答中,我已經建議我將腳本超時更改爲0(無超時)。如何在腳本中設置SQL Server腳本的超時時間?

從腳本中設置此超時的最佳方法是什麼?目前,我有所有這一切都在腳本文件在希望的頂部是其中的一個做一些事情:

sp_configure 'remote login timeout', 600 
go 
sp_configure 'remote query timeout', 0 
go 
sp_configure 'query wait', 0 
go 
reconfigure with override 
go 

不過,我仍然得到同樣的結果,我不能告訴我,如果'm成功設置超時時間,因爲sqlcmd.exe的響應是世界上最不有用的錯誤消息:

Sqlcmd: Error: Scripting error.

謝謝。

回答

5
sqlcmd -t {n} 

其中的{N}必須是一個數字,介於0和65535

注意你的問題是有點,因爲the server has no concept of a timeout誤導,因此,你不能設置你的腳本中的超時時間。

在你的背景下,超時由sqlcmd

4

我認爲有在SQL Server上的SQL腳本中沒有超時的概念。您必須在調用層/客戶端中設置超時。

根據this MSDN article你可以嘗試增加超時是這樣的:

exec sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go 

「使用遠程查詢超時選項來指定多久,以秒爲單位的遠程操作可以前的Microsoft SQL Server始終採取默認值爲600,允許等待10分鐘,該值適用於由數據庫引擎發起的作爲遠程查詢的傳出連接,該值對數據庫引擎收到的查詢沒有影響。

P.S .:以300 MB表示生成的文件爲300 MB?我不希望腳本文件本身是300 MB。這將是世界紀錄。 ;-)

+1

是,SQL腳本本身〜300MB。我懷疑這是世界紀錄,因爲它只有140萬行非常簡單的桌子! – tags2k 2008-10-22 09:15:57

+0

@ tags2k哦,它用於在「INSERT」語句中插入數據......我確信有這樣做的理由,但是無法獲得文本文件中的數據並通過DTS包導入它或類似的東西? – splattne 2008-10-22 09:24:12

+0

每一行都需要通過我的API來檢查,雖然我確信我可以通過DTS包複製所有檢查,但是在需要的時間和壓力下,我可能只是劃分我已有的SQL腳本。 – tags2k 2008-10-22 10:55:50