簡體   English   中英

Powershell Invoke-Sqlcmd-返回多個數據集

[英]Powershell Invoke-Sqlcmd - return multiple datasets

我正在尋找有關使用Invoke-SqlCmd返回多個數據集或保持會話打開Invoke-SqlCmd

我有一系列SQL查詢,這些查詢使用臨時表來生成一些數據的相關視圖,這些數據將通過Excel發送給經理。 在研究數據集中的需求時,我有點厭倦了將樣本剪切並粘貼到Excel中的過程。

我以為可以使用Powershell將結果簡單地發送到HTML文件作為管理器的輸出,但是遇到了兩個問題

  1. 如果我將最終提取的數據放入一個SQL文件中,那么Powershell會將所有數據附加到一個結果集中(表的union
  2. 如果我嘗試構建臨時表然后分別提取每個查詢,則每個Invoke-Sqlcmd都是一個單獨的會話,這意味着我的臨時表將被刪除。

我正在尋找有關返回多個數據集或保持會話打開的建議?

Invoke-Sqlcmd -InputFile .\GenerateTimecard.sql -Variable $params | Out-Null;

@{
     'Summary' = 'select * from #WeeklyTimeSummary;'
     'ByDay'   = 'select * from #WeeklyTimeDaily order by postdate desc;'
     'ByTask'  = 'select * from #WeeklyTimeEvents order by HoursSpent desc;'
     'Detail'  = 'select * from #WeeklyTimeDetail order by postdate desc;'
}.GetEnumerator() | ForEach-Object { 
Write-Output $_.Name;
    $fname = $_.Name + '.html';
    Invoke-Sqlcmd -Query $_.Value  | ConvertTo-Html | Out-File -Encoding ascii $fname;
};

Get-Help Invoke-Sqlcmd的Description部分說它支持GO命令,因此您可以嘗試立即運行所有內容。 我個人將使用-InputFile參數並將結果通過管道傳輸到Out-File。

暫無
暫無

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

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