我只是在多臺服務器上做一些stat集合,而作爲測試,我正在使用我的機器(機器A)和另一臺機器(機器B)網絡。在Windows 7上動態創建SQL Server 2008中的分佈式查詢
我的機器(A)正在收集來自其他機器(B)的登臺表中的所有信息。我有一個運行SP和動態創建這樣的事情:
exec ('exec SprocName ?', 1000) at [Machine B]
什麼上面做的是拉從機B. 1000個批處理這將循環,直到所有數據被檢索所需的信息。
下一次運行時,使用不同的SprocName,它實際上不會調用機器B,將@@ rowcount視爲0並繼續。它只運行第一個使其符合上述說明的sproc。
所以僞代碼:
while (each sproc)
{
set @qry = exec ('exec SprocName ?', 1000) at [Machine B]
while (rowcount <> 0)
{ exec (@qry) }
}
我以前嘗試過這種方法爲 'SELECT * FROM OPENQUERY([機器B],' EXEC SprocName @batchsize),但我試圖不同的方法此時周圍。有沒有人知道爲什麼Servername中的exec()只想使用一個sprocname?它會循環並拉動所有行,但移動到第二個sprocname顯然甚至不會呼叫機器B.
我不打算使用Servername.Table.Schema.Sproc出於性能原因。
一些統計:
機A - Windows 7的SQL服務器2008 SP1沒有CU安裝
計算機B - Windows 2003中的SQL Server 2005 SP3沒有CU安裝
兩人都大多都上了MSDTC選項屬於這種除XA交易。
如果有人真的瞭解我的問題並提供幫助,請事先致謝。
您最好發佈真實代碼,而不是僞代碼,因爲問題很可能出現在您的邏輯中。 – 2009-10-12 21:01:02