2011-01-07 77 views
0

我希望我的問題標題足夠清晰。我正在嘗試的是使用SQL Server管理對象在同一服務器上的所有數據庫上同時執行更新腳本。我目前的實驗實現是這樣的:使用SMO和任務並行庫同時在同一服務器上的數據庫上執行腳本?

var server = new Server(new ServerConnection(new SqlConnection(connString))); 
server.ConnectionContext.InfoMessage += new SqlInfoMessageEventHandler(DBOutputReceived); 

var databases = server.Databases.Cast<Database>().ToList();   
Parallel.ForEach(databases, db => { db.ExecuteNonQuery(script); }); 

我什至不知道這是可能的使用SMO,但是這基本上是我想做的事情。我可以看到ConnectionContext.InfoMessage事件可能會有問題,但我不知道如何解決。我應該爲每個並行任務創建一個單獨的服務器實例嗎?

我會很感激你可以給任何意見。

謝謝,丹尼爾

回答

0

的解決方案是讓每個線程創建它自己的服務器/ ServerConnection對象,這種方式存在線程之間沒有共享內存。

相關問題