關於如何完成此任何想法?我們如何讓sqlcmd在下一批繼續「出錯」?
USE [db_name]
BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT; //If error continue with next batch
BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT;
...
關於如何完成此任何想法?我們如何讓sqlcmd在下一批繼續「出錯」?
USE [db_name]
BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT; //If error continue with next batch
BEGIN TRANSACTION
...TONS OF INSERTS
COMMIT;
RAISERROR (..) WITH NOWAIT;
...
錯誤批處理中斷的行爲是SQL Server(即後端)選項,並受錯誤嚴重性控制。無法更改服務器行爲,中斷批處理的錯誤將始終中斷批處理。
文件延續的行爲(錯誤後運行下一個GO定界批處理)是sqlcmd選項,並受-b開關控制。默認爲ON(意味着sqlcmd會繼續下一批)。
在命令行上使用-V
標誌。如果設置了足夠大的值(例如17),即使相當嚴重的錯誤也不會停止腳本。
例如sqlcmd ... -V 17 -i MyFile.sql
我會假設你知道你在做什麼,並且正在監視錯誤信息。
你可以走得更高,達到25級,但是如果你得到17級和25級之間的錯誤,那麼你不太可能進步很多,因爲它們往往是由軟件或硬件引起的服務器上的錯誤,而不是您輸入的腳本中的錯誤。 (http://msdn.microsoft.com/en-us/library/aa937483(v=sql.80).aspx)