2011-01-11 41 views
0

我一直在撞牆,試圖弄清楚如何在使用SMO的單個SQL Server實例中針對多個數據庫同時運行更新腳本。我們的環境中有越來越多的需要更新的數據庫,並且一次迭代一個數據庫正成爲一個問題(太慢)。使用SMO同時調用Database.ExecuteNonQuery()?

從我所瞭解的SMO不支持併發操作,我的測試已經證明了這一點。在服務器對象級別似乎存在共享內存,因爲像DataReader上下文這樣的內容會一直拋出異常,例如「閱讀器已經打開」。我很抱歉沒有得到確切的例外。我會盡力讓他們更新這篇文章。

我不是SMO的專家,只是覺得我的方式是誠實的。我不確定我是否以正確的方式接近它,但這是必須要做的事情,否則我們的生產力會慢慢下降。

那麼你會如何做這樣的事情?我用SMO使用了錯誤的技術嗎?我想要做的就是並行地在單個sql服務器實例中針對數據庫執行sql腳本。

感謝您的幫助,您可以給,丹尼爾

回答

0

只要使用多一個ServerConnection對象,並實例每個multipe Server對象。基本上,每個線程一個。它們全都連接到相同的數據庫實例並不重要。

我已經編寫了一個應用程序來以這種方式記錄數據庫的模式。我同時運行多個「查詢」(不僅僅是ExecuteNonQuery(),而且還包括SMO中的其他函數),沒有任何問題 - 至少直到今天。不幸的是,除了相當「基本」的東西外,他們似乎並沒有太多的SMO文檔。

+0

太好了,謝謝。我一直試圖在所有線程中共享ServerConnnection對象,我認爲這是我的問題所在。感謝您指點我正確的方向。 – JimDaniel 2011-01-12 17:01:09