Я ищу предложения по возврату нескольких наборов данных или открытию сеанса с Invoke-SqlCmd
?Powershell Invoke-Sqlcmd - возвращает несколько наборов данных
У меня есть серия SQL-запросов, которые используют временные таблицы для генерации нескольких связанных представлений данных, которые я отправляю (через Excel) менеджеру. Когда мы работаем над тем, что требуется от наборов данных, я немного устаю от резки и вставки образцов в Excel.
Я думал использовать Powershell, чтобы просто отправить результаты в HTML-файлы в качестве вывода для менеджера, однако я столкнулся с несколькими проблемами
- Если я кладу окончательные экстракты в один SQL файл, Powershell присоединяет все данные в единый результирующий набор (вид
union
таблиц) - Если я попытаюсь создать временные таблицы, а затем извлечь каждый запрос отдельно, каждый
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;
};
Это поставит все данные в единый результирующий набор, который затем не может быть разделен на отдельные выходные файлы. (См. Пункт 1 в ОП) –