我正在嘗試編寫一個存儲過程,該存儲過程將允許我編寫在SQL Server上的所有數據庫上運行的單個SELECT語句。 (微軟SQL 2005)爲統計目的查詢多個數據庫SQL
到目前爲止,香港專業教育學院想出了下面的過程
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [sp_cross_db_query]
@SQLQuery varchar(400)
AS
DECLARE @DB_Name varchar(100)
DECLARE database_cursor CURSOR FOR
SELECT DatabaseName
FROM Management.dbo.Customers
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
WHILE @@FETCH_STATUS = 0
BEGIN
exec(
'USE [' + @DB_Name + '];' +
@SQLQuery
)
FETCH NEXT FROM database_cursor INTO @DB_Name
END
CLOSE database_cursor
DEALLOCATE database_cursor
通過它來運行查詢
exec sp_cross_db_query 'SELECT count(*) FROM Products'
我可以指望在所有數據庫中的所有產品,問題是我返回數據的方式。現在我得到了幾個「窗戶」,結果巫婆是非常難以控制的。 所以我的問題是,我怎麼能得到非常像一個選擇結果..,聯盟選擇..,聯盟選擇..? (換句話說,一個結果表)?
我想過在程序內部創建臨時表,您怎麼看?
在此先感謝!
謝謝,我會試試這個。 – Alexander 2010-07-19 12:34:18
有什麼更大的nvarchar(最大)? /: 這對我不起作用 – Alexander 2010-07-19 13:03:27
它沒有足夠的字符。該查詢得到'切斷' – Alexander 2010-07-19 13:12:29