Sql server 在一个运行时使用PowerShell从具有不同表、列、行的多个SQL查询中获取2个或多个数据表
寻求您对我使用PowerShell运行多个SQL查询的问题的建议和建议 我正在运行两个不同的SQL查询 第一个问题: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
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*顺便问一下,如何将我的问题标记为已解决?