2017-05-25 70 views
1

我有一個SQL腳本,當我逐行執行時,它的工作方式與我想要的完全一樣。起初,這是一個可行的選擇,但隨着時間的推移,腳本變得越來越大,現在逐漸消失。使用多種語句類型自動執行SQL腳本

我試圖運行該腳本作爲Visual Studio中的SSIS包的一部分,但這給了我奇怪的結果。

我有一種感覺,這是因爲我在腳本中混合了語言(即多個UPDATE,ALTER,SELECT INTO,語句)... 有沒有一種方法來自動執行此腳本,使其逐行運行如果我正在通過它?

善良。謝謝你!

+1

在移動到下一個塊之前,您需要提交DDL更改。我認爲SQL Server使用GO。 https://stackoverflow.com/questions/1432757/sql-server-script-alter-procedure-executing-multiple-alter-procedure-into-one可能會有所幫助。 GO執行最後一個「GO」中的所有語句,因此如果您要更改DDL,則可以在下一系列事務之前進行更新,以使更改生效。 – xQbert

+0

這是爲了調試目的嗎?爲什麼不將腳本分成多個包/多個存儲過程? – Alexei

+0

@Alexei理想情況下,我想部署此自動運行。當我轉移到Visual Studio時,我試圖將腳本分成多個包,但由於我寫了腳本的線性方式,它沒有給我預期的結果。 – hansolo

回答

2

一般來說。所有你需要的是每個語句之後的分號,這與語句類型無關。只有當你想把它分成批時才需要「Go」(儘管如果你將代碼傳遞給別的東西,例如ADO.NET命令對象,它可能不起作用)。如果您希望代碼在「go」之前繼續運行而不管代碼是成功還是失敗,這都會很有幫助。如果您希望代碼的繼續依賴於以前的代碼,請確保以「;」結束每個語句。

+0

謝謝你。規模上壞習慣如何成爲問題的一個很好的例子。任何想法爲什麼它需要這麼長的時間?它沒有花2個小時手動完成腳本... – hansolo

+0

仍然沒有運氣。部分腳本可以成功運行,但是一些UPDATE語句永遠不會發生,導致列中沒有數據。 – hansolo

+0

您是否嘗試將每個語句的SQL腳本任務設置爲SSIS作業?或者你可以在數據流任務中設置它?這些可能會讓您更深入地瞭解您遇到問題的位置。嘗試運行後,查看輸出並查找任何錯誤或警告消息。 –