Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在一个运行时使用PowerShell从具有不同表、列、行的多个SQL查询中获取2个或多个数据表_Sql Server_Powershell - Fatal编程技术网

Sql server 在一个运行时使用PowerShell从具有不同表、列、行的多个SQL查询中获取2个或多个数据表

Sql server 在一个运行时使用PowerShell从具有不同表、列、行的多个SQL查询中获取2个或多个数据表,sql-server,powershell,Sql Server,Powershell,寻求您对我使用PowerShell运行多个SQL查询的问题的建议和建议 我正在运行两个不同的SQL查询 第一个问题: SELECT primary_replica FROM sys.dm_hadr_availability_group_states 第二个问题: SELECT [member_name] AS [Name] ,[member_type_desc] AS[Type] ,[member_state_desc] AS [State] ,[Quoru

寻求您对我使用PowerShell运行多个SQL查询的问题的建议和建议

我正在运行两个不同的SQL查询

第一个问题:

SELECT primary_replica FROM sys.dm_hadr_availability_group_states
第二个问题:

SELECT [member_name] AS [Name]
      ,[member_type_desc] AS[Type]
      ,[member_state_desc] AS [State]
      ,[Quorum Vote] = CASE WHEN [number_of_quorum_votes]=1 THEN 'Yes' ELSE 'No' END
FROM [master].[sys].[dm_hadr_cluster_members]
这些结果不同。行数、列数和表本身数不同

第一个查询结果:只返回主副本;1列

第二个查询结果:返回副本名称、集群类型、状态和仲裁投票

我的问题是,我计划使用这两个数据表作为电子邮件验证,但每次我在PowerShell中调用它时,第二个数据表总是给我一个空值。原因是他们有不同的结果。那么,如何通过在PS中更改SQL查询来获得想要的结果呢

在运行第二个查询之前,我已经尝试关闭SQL连接,但在第二个查询中它仍然会抛出一个空表

编辑:添加PS脚本

使用Invoke-Sqlcmd cmdlet:

$query=@选择[member\u name]作为[name],[member\u type\u desc]作为[type],[member\u state\u desc]作为[state],[Quorum Vote]=当[numbers\u Quorum\u Vote]=1时,则在[master].[sys].[dm\u hadr\u cluster\u members]中选择主副本,从sys.dm\u hadr\u可用性\u group\u states中选择主副本 foreach$querys在$query中{ 调用Sqlcmd-Query$querys-Database master-ServerInstance VD104855 } 第二种脚本.Net方法:

函数运行查询{ 参数[string[]]$querys 开始{ $SQLServer='localhost' $Database='db' $SqlConnection=新对象System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString=Server=$SQLServer;数据库=$Database;集成安全性=True } 过程{ 对于$i=0;$i-lt$querys.count;$i++{ $SqlCmd=New Object System.Data.SqlClient.SqlCommand 使用当前索引$i获取查询 $SqlCmd.CommandText=$querys[$i] $SqlCmd.Connection=$SqlConnection $SqlAdapter=新对象System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand=$SqlCmd $DataSet=新对象System.Data.DataSet $SqlAdapter.Fill$DataSet $DataSet.Tables } } 结束{ $SqlConnection.Close } } $queries=@ $queries+= 选择[成员名称]作为[名称] ,[member\u type\u desc]作为[type] ,[成员国]作为[国家] ,[法定人数表决]=案件 当[法定人数票数]=1时 然后“是” 否则“不” 终止 来自[master].[sys].[dm_hadr_集群成员] $queries+=从sys.dm\u hadr\u availability\u group\u states中选择主副本; 运行Query-querys$querys
有关PowerShell代码的帮助:显示PowerShell代码。很可能您只是对PowerShell的默认格式化程序有问题。可能是的重复。谢谢您的建议。我通过对每个结果使用管道解决了这个问题。在每个循环$results | out字符串或$results | select*顺便说一句,如何将我的问题标记为已解决?有关PowerShell代码的帮助:显示PowerShell代码。很可能您只是对PowerShell的默认格式化程序有问题。可能是的重复。谢谢您的建议。我通过对每个结果使用管道解决了这个问题。在每个循环$results | out字符串或$results | select*顺便问一下,如何将我的问题标记为已解决?