2011-11-18 19 views
5

是否支持從SQL Server 2008 R2中的存儲過程並行執行查詢?拿這個僞代碼例如對並行查詢的原生TSQL支持

create proc dbo.MySproc 
as 
    delete from SomeTable where Predicate = true [as parallel] 
    delete from AnotherTable where Predicate = false [as parallel] 

    [wait for queries] 

    select * from SomeTable join AnotherTable on Predicate = true 

我見過這樣的例子,但它們需要安裝非原生CLR過程這是我想避免的。

注意:我不是在談論執行計劃,我的意思是同時運行兩個不相關的查詢異步,而不是一個接一個。

+0

您可以從批處理文件中引發它們。我現在在一些進程中執行此操作。 Proc1 Proc2 Proc3全部並行執行並更新一個標誌表,Proc4在設置所有3個標誌時觸發 – JNK

+0

您指的是批處理文件,就像通過osql運行它們一樣? –

+0

是的。如果你使用'start',批處理文件就會在不等待完成的情況下啓動命令,並且會根據需要啓動儘可能多的'osql'會話 – JNK

回答

6

不,沒有用於控制並行性的T-SQL語法。

有很多遊戲可以玩類似的東西,但它們都需要一個非T-SQL實體。例如,SQL Server作業,產生多個線程的CLR SP,產生線程的C#應用​​程序,使用sqlcmd執行T-SQL等。

+0

+1這就是我所看到的。謝謝。 –