Sql-Server
sp_blitzfirst 結果到連結伺服器上的表
我一直在尋找將 sp_blitzfirst 結果記錄到連結伺服器上的表的解決方案。我看到 github 文章中有一個貢獻者將它添加到 sp_blitz,但它已經關閉了一段時間。我看到模糊的傳言說這可能已經存在於 sp_blitzfirst 中,但我準備好因為我無法自己找到解決方案而受到懲罰。
有人可以給我一個明確的答案嗎?
可以通過使用包裝程序在本地收集資訊然後將該資訊轉儲到目標伺服器來克服腳本的限制。一種方法是使用 dbatools。
- 在本地執行
dbo.sp_BlitzFirst
,因為您可以將資訊本地記錄到表中。EXEC dbo.sp_BlitzFirst @OutputDatabaseName = 'tempdb'-- change here !! , @OutputSchemaName = 'dbo' , @OutputTableName = 'BlitzFirst' , @OutputTableNameFileStats = 'BlitzFirst_FileStats' , @OutputTableNamePerfmonStats = 'BlitzFirst_PerfmonStats' , @OutputTableNameWaitStats = 'BlitzFirst_WaitStats' , @OutputTableNameBlitzCache = 'BlitzCache' , @OutputServerName ='--YourServerName--'-- change here !!
- 使用dbatools將該資訊轉儲到您的中央伺服器以進行報告等。
例如,一個簡單的範例,它從源伺服器中提取數據並執行批量插入到目標 sql 伺服器中,並具有自動生成表的能力
$tableName = "BlitzFirst_FileStats" $query = "select * from [dbo].[BlitzFirst_FileStats]" $results = Invoke-DbaQuery -SqlInstance 'yourserverName,port' -SqlCredential $Cred -Database tempdb -Query $query $results = Write-DbaDataTable -SqlInstance 'yourTargetInstance,portNo' -SqlCredential $Cred -Database CentralDBName -Table BlitzFirst_FileStats -Schema dbo -AutoCreateTable
注意:如果您有大量伺服器,最好使用多執行緒 dbatools(我最近在部落格上寫瞭如何使用 PoshRSJob 來利用多執行緒)。