sql数据集

laik7k3q  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(474)

这个问题在这里已经有了答案

powershell输出在函数之间交叉(1个答案)
9个月前关门了。
我有一个powershell脚本,它在3个服务器的列表中循环。sql脚本与一起运行 Invoke-Sqlcmd 结果集存储到变量中 $DS . 在循环结束时,我返回带有 $DS.Tables.Rows .
但是结果集正在混合在一起。我试着用 Write-Host 消息来分解结果。但他们还是混在一起了。
为什么结果在输出中混合在一起?
如何在每个循环之间分离输出?
谢谢


对象类型

  1. $DS | gm ............... TypeName: System.Data.DataSet
  2. $DS.Tables | gm ........ TypeName: System.Data.DataTable
  3. $DS.Tables.Rows | gm ... TypeName: System.Data.DataRow

脚本

  1. ######################### >
  2. # SQL servers
  3. $PCList= @("GCOD139","GCOD039","GCOP039")
  4. Write-Host ($PCList -join ", ")
  5. # Query multiple servers
  6. foreach ($PC in $PCList) {
  7. Write-Host ($PC + "...") -ForegroundColor Yellow
  8. # SQL parameters
  9. $Params = @{
  10. 'ServerInstance' = $PC;
  11. 'Database' = 'master';
  12. # 'Username' = 'svcBIPOC';
  13. # 'Password' = 'bipoc2020*';
  14. # 'InputFile' = "C:\ScriptFolder\TestSqlCmd.sql"
  15. 'Query' = '
  16. SELECT
  17. [Server]= @@SERVERNAME
  18. --MB to GB
  19. , REPLACE(name, ''MB'', ''GB'')
  20. ,[value]= CAST(value as int)/1000
  21. , [value_in_use]= CAST(value_in_use as int)/1000
  22. --, value, value_in_use, [description]
  23. FROM sys.configurations
  24. WHERE name like ''%server memory%''
  25. ORDER BY name desc
  26. OPTION (RECOMPILE);
  27. '
  28. }
  29. # Capture SQL Dataset
  30. # (Get-Date).ToSTring('s') + " SQL query start..."
  31. $DS = Invoke-Sqlcmd @Params -As DataSet
  32. #(Get-Date).ToSTring('s') + " SQL query end..."
  33. Write-host "-----"
  34. Write-host "SQL"
  35. sleep -Seconds 5
  36. $DS.Tables.Rows
  37. sleep -Seconds 5
  38. }
  39. #########################
efzxgjgh

efzxgjgh1#

停止使用 Write-Host 传达进度信息-使用 Write-Progress 为了这个!

  1. $PCList= @("GCOD139","GCOD039","GCOP039")
  2. Write-Progress -Activity "Query servers" -Status "About to query: $($PCList -join ", ")"
  3. # Query multiple servers
  4. foreach ($PC in $PCList) {
  5. Write-Progress -Activity "Query servers" -Status "Querying: $PC"
  6. # SQL parameters
  7. $Params = @{
  8. 'ServerInstance' = $PC;
  9. 'Database' = 'master';
  10. # 'Username' = 'svcBIPOC';
  11. # 'Password' = 'bipoc2020*';
  12. # 'InputFile' = "C:\ScriptFolder\TestSqlCmd.sql"
  13. 'Query' = '
  14. SELECT
  15. [Server]= @@SERVERNAME
  16. --MB to GB
  17. , REPLACE(name, ''MB'', ''GB'')
  18. ,[value]= CAST(value as int)/1000
  19. , [value_in_use]= CAST(value_in_use as int)/1000
  20. --, value, value_in_use, [description]
  21. FROM sys.configurations
  22. WHERE name like ''%server memory%''
  23. ORDER BY name desc
  24. OPTION (RECOMPILE);
  25. '
  26. }
  27. # Capture SQL Dataset
  28. $DS = Invoke-Sqlcmd @Params -As DataSet
  29. $DS.Tables.Rows
  30. }
  31. Write-Progress -Activity "Query servers" -Completed

现在进度消息不会干扰函数的实际输出

展开查看全部

相关问题