2017-07-13 81 views
2

我有幾個查詢,我用於識別SQL數據庫中的問題,但我試圖創建在PowerShell腳本,我可以用它來自動執行此操作。我遇到的麻煩是,當我調用我的SQL腳本時,有多個結果集,我的腳本似乎只捕獲第一組。我想知道我需要做什麼來循環所有結果。這是隻是一些簡單的選擇使用powershell來處理多個SQL結果集

$dataSource = 'Server' 
$database = "DB" 
$sqlcommand = @" 
Select TOP 1000 * from tblA; 
Select TOP 1000 * from tblB 
"@ 


Function Convert-Dataset 
{ 
    Param 
    (
     [Parameter(Mandatory=$true)] 
     $dataset 
    ) 

    Begin 
    { 
     [email protected]() 
     For($r = 0; $r -lt $dataset.tables[0].rows.Count; $r++) 
     { 
      $table= new-object psobject 
      If($dataset.tables[0].columns.ColumnName.Count -le 1) 
      { 
       $colName = [String]$dataset.tables[0].columns.ColumnName 
       If($dataset.tables[0].rows.Count -eq 1) 
       { 
        $colValue = [string]$dataset.tables[0].rows.$colName 
       } 
       Else 
       { 
        $colValue = [string]$dataset.tables[0].rows[$r].$colName 
       } 
       $table | Add-Member -memberType noteproperty -Name $colName -Value $colValue 
      } 
      Else{ 
       For($c = 0; $c -lt $dataset.tables[0].columns.ColumnName.Count; $c++) 
       { 
        $colName = [String]$dataset.tables[0].columns.ColumnName[$c] 
        $colValue = [string]$dataset.tables[0].rows[$r][$c] 
        $table | Add-Member -memberType noteproperty -Name $colName -Value $colValue 
       } 
      } 
      $return +=$table 
     } 
    } 
    End 
    { 
     Return $return 
    } 
} 

$connectionString = "Data Source=$dataSource; " + 
     "Integrated Security=True; " + 
     "Initial Catalog=$database" 
$connection = new-object system.data.SqlClient.SQLConnection($connectionString) 
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection) 
$connection.Open() 
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command 
$dataset = New-Object System.Data.DataSet 
$adapter.Fill($dataSet) | Out-Null 
$connection.Close() 
$return=Convert-Dataset -dataset $dataset 
$return | Out-GridView 
+0

哪裏「轉換,數據集」從何而來? –

+0

我寫了convert-dataset作爲一種方式來處理使用$ result.ColumnName返回的內容 – Jewtus

回答

3

代碼我想通了

$connectionString = "Data Source=$dataSource; " + 
     "Integrated Security=True; " + 
     "Initial Catalog=$database" 
$connection = new-object system.data.SqlClient.SQLConnection($connectionString) 
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection) 
$connection.Open() 
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command 
$dataset = New-Object System.Data.DataSet 
$adapter.Fill($dataSet) | Out-Null 
$connection.Close() 

ForEach($table in $dataset.Tables) 
{ 
     $table |Out-GridView -PassThru 
}