2010-10-07 75 views
0

我正在使用SQL Server 2005,並且我遇到了我一個一個地在單個表上運行多個更新查詢的問題。由於需要花費很多時間逐一執行,我才知道通過使用「GO」我可以逐個運行查詢。像這樣在SQL Server 2005中使用GO

Update Table A .... 

GO

更新表A

GO

更新表A

我不知道,我可以把單獨的更新語句,這樣,它會運行逐個查詢。當我在製作時,我需要確保它能夠正常工作。

任何人都可以給我一個例子,我可以看到,通過使用GO,查詢一個接一個運行,而不是平行?

+0

如果你不確定他們,然後單獨運行每個更新。 – 2010-10-07 06:30:29

+0

謝謝Srini,但我有幾個更新聲明,他們大多數在同一張桌子上。他們需要不同的時間來執行,所以我認爲要做一個序列化的運行,而不是等待並逐一進行手動操作。 – Zerotoinfinity 2010-10-07 06:36:02

回答

3

GO (Transact-SQL)

GO不是Transact-SQL語句;它是由 sqlcmd和osql實用程序和SQL Server Management Studio代碼 編輯器識別的命令。

SQL Server實用解釋GO作爲 信號,他們應該在 當前批的Transact-SQL語句 的發送到SQL Server實例。當前批次的 報表包含自從上一個GO, 或自特設 會話或腳本開始以來輸入的所有 語句,如果這是第一個 GO。

+0

由於我使用的是SQL Server管理工作室,這是否意味着它會單獨執行這些更新語句? – Zerotoinfinity 2010-10-07 06:34:08

+0

@Andrew Barber,請注意,GO是SSMS命令,而不是TSQL,正如我所說的。所以我認爲最好的辦法就是如果你能夠X-射線,那麼就會讓你完全不知所措) – 2010-10-07 06:43:25

1

無論您是否使用GO命令,您的查詢都不會並行運行。旁觀者發佈了一個解釋什麼是GO的答案。讀一讀,然後回到這裏。

無論您是否使用GO命令,您的腳本都將一個接一個地運行。它們不是並行運行的。

您可以通過編寫腳本如這證明這(僞代碼,但你的想法)

INSERT INTO MyTable ([id], [data]) VALUES (3, 'I am here') 
DELETE FROM MyTable WHERE [id]=3 

你可以把這些語句之間,或者不是一個GO,其結果將是相同的:第一個命令將在第二個命令運行之前完全完成。