我正在使用Powershell脚本,其中Qury1的输出是查询2的条件供稿,但未获取供稿,如果有人请参见并告诉我可能的解决方案。还请注意,在实际环境中,两个查询都在不同的实例上运行,并且没有链接服务器的可能性下面的例子是我在冒险工作数据库中尝试过的]
$instance="WIN2016-SQL01\SQLSERVER_01"
$database = "AdventureWorks2014"
$query1 = "SELECT TOP 10 [BusinessEntityID] FROM [AdventureWorks2014].[Person].[BusinessEntityAddress] where BusinessEntityID < 10 order by 1 "
$Q1 = (invoke-sqlcmd -query $query1 -ServerInstance $instance -Database $database)
$query2 = "SELECT * FROM [AdventureWorks2014].[Person].[Person] where BusinessEntityID in ($Q1)"
$Q2 = invoke-sqlcmd -query $query2 -ServerInstance $instance -Database $database
下面的示例将BusinessEntityID值的Q1结果列表转换为XML参数值。由于Invoke-SqlCmd不支持参数化查询,因此有必要直接使用SqlClient对象。 Invoke-SqlCmd
的替代方法是dbatools的Invoke-DbaQuery,如果有可用的话,它支持参数化查询。