1
好的,所以我有這個查詢是用來記錄存儲過程的使用情況。問題是,我使用了合併語句,它不能跨多臺服務器插入中央表。我基本上需要在每臺服務器上生成信息,然後將數據插入中央服務器的表中。任何輸入都會很好地解決這個問題。我們正在使用SQL 2008 R2。跨多個服務器合併數據
MERGE INTO [DBA].dbo.SP_Exec_Stats_Table STAT
USING
(
SELECT db.name as [DatabaseName]
,OBJECT_NAME(d.object_id, d.database_id) [ProcedureName]
,d.last_execution_time
,o.modify_date
,d.total_elapsed_time/d.execution_count AS [avg_elapsed_time]
,d.execution_count
,@@SERVERNAME as [ServerName]
,d.object_id
FROM sys.dm_exec_procedure_stats AS d inner join sys.databases as db on db.database_id = d.database_id
inner join sys.objects o on o.object_id = d.object_id
WHERE d.database_id not in(1,2,3,4,5)
) as SRC
ON STAT.[Object_id] = SRC.Object_id
WHEN MATCHED
AND STAT.[Last_Exec_Time] <> SRC.last_execution_time THEN
UPDATE SET
[Last_Exec_Time] = SRC.last_execution_time
WHEN NOT MATCHED THEN
INSERT (DatabaseName
,object_id
,[ProcedureName]
,[Last_Exec_Time]
,[Modified_Date]
,[Avg_Elapsed_Time]
,[Exec_Count]
,[Server_Name]
)
VALUES (SRC.DatabaseName
,SRC.object_id
,SRC.[ProcedureName]
,SRC.last_execution_time
,SRC.modify_date
,SRC.[Avg_Elapsed_Time]
,SRC.execution_count
,SRC.[ServerName]
) ;
MERGE語句的目標不能是遠程表,但源很可能是遠程服務器上的表。因此,也許你可以修改你的作業從遠程服務器提取數據併合併到中央服務器 – user2321864 2014-09-10 15:09:52
我甚至沒有想到要這樣做。謝謝,我重寫了我的聲明並在主機服務器上進行了設置,以查看所有其他服務器,並且它運行良好。感謝你的回答 – 2014-09-10 16:11:40