簡體   English   中英

從多個SQL Server收集數據

[英]Collecting data from multiple SQL Servers

我敢肯定有一個簡單的答案。 我只是不知道該怎么做。 我需要一種從多個SQL Server收集數據的方法。 我正在使用以下代碼來獲取數據。 (不是真正的代碼)。

該代碼獲取一組SQL Server的VERSION信息。 我需要一種以數組或某種形式收集這些信息的方法。

隨后,在FOREACH塊之后,一旦將數據放在一個位置,就將對其進行處理。 謝謝。

$servers = 'srv1','srv2','srv3','srv4','srv5'

foreach($i in $servers) {

$sql = "select @@version"

#I need a way to collect the below result set in a variable  cummulatively
#if i just use some variable $res, data gets overwritten in every iteration 

Invoke-Sqlcmd -ServerInstance $i  -query $sql   -ConnectionTimeout 60 -QueryTimeout 99999

}

像這樣的事情應該做你想要的:

$servers = 'srv1','srv2','srv3','srv4','srv5'

$sql = "select @@version"
$res = foreach($i in $servers) {
  Invoke-Sqlcmd -ServerInstance $i -Query $sql -ConnectionTimeout 60 -QueryTimeout 99999
}

為什么不使用數組?

Invoke-SQLcmd的結果將是一個可以添加到數組的對象。 像這樣:

$servers = 'srv1','srv2','srv3','srv4','srv5'

$result = @()
foreach($i in $servers) {

$sql = "select @@version"

#I need a way to collect the below result set in a variable  cummulatively
#if i just use some variable $res, data gets overwritten in every iteration 

$result += Invoke-Sqlcmd -ServerInstance $i  -query $sql   -ConnectionTimeout 60 -QueryTimeout 99999

}

看來您已經找到答案了。 如果要避免使用Invoke-Sqlcmd,這是另一個選擇。

Invoke-Sqlcmd2是Chad Miller的舊功能,Chad Miller是SQL的Microsoft MVP以及其他一些貢獻者。 一些好處包括簡化的參數化查詢,管道輸入,不依賴SQLPS等。

#Dot source Invoke-Sqlcmd2
. "\\path\to\Invoke-Sqlcmd2.ps1"

#Example query using pipeline input.
#Append server instance adds the instance as a column.
$Servers |
    Invoke-Sqlcmd2 -Query "select @@version as Version" -AppendServerInstance 

<#
    Version                                                       ServerInstance                                                                                      
    -------                                                       --------------                                                                                      
    Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) ...   ServerInstance1                                                                                             
    Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) ...   ServerInstance2                                                                                             
    Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64) ...       ServerInstance3                                                                                            
    Microsoft SQL Server 2012 (SP1) - 11.0.3368.0 (X64) ...       ServerInstance4     
#>

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM