我目前有一个powershell进程,它构建查询字符串、创建数据表、创建sql连接、创建sql命令、创建数据读取器,并将sql命令的结果加载到数据表中。然后,我将该数据表作为用户定义的表类型传递给sql server。它看起来像这样:
$Query =
"
SELECT
group_id AS GroupID,
listener_id AS ListenerID,
dns_name AS DNSName,
[Port],
is_conformant AS IsConformant,
ip_configuration_string_from_cluster AS IPConfigurationString
FROM master.sys.availability_group_listeners
"
#where we're storing query results
$Datatable = New-Object System.Data.DataTable
$sqlConnection = new-object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server=ServerName; Database=Audit;Trusted_Connection=True;Connect Timeout=5;"
$sqlConnection.Open()
$sqlCommand = new-object System.Data.SqlClient.SqlCommand
$sqlCommand.Connection = $sqlConnection
$sqlCommand.CommandText = $Query
$sqlCommand.CommandType = [System.Data.CommandType]::Text
$sqlCommand.CommandTimeout = 5
$DataReader = $sqlCommand.ExecuteReader()
$Datatable.Load($DataReader)
if ($Datatable.Rows.Count -gt 0)
{
Write-Host " Insert Results"
$sqlConnection = new-object System.Data.SqlClient.SqlConnection
$sqlConnection.ConnectionString = "Server='servername; Database=Audit;Trusted_Connection=True;"
$sqlConnection.Open()
$sqlCommand = new-object System.Data.SqlClient.SqlCommand
$sqlCommand.Connection = $sqlConnection
$sqlCommand.CommandText = "InsertResults"
$sqlCommand.CommandType = [System.Data.CommandType]::StoredProcedure
$sqlCommand.CommandTimeout = 10
$sqlCommand.Parameters.Add("@results", [System.Data.SqlDbType]::Structured).value = $datatable
$sqlCommand.ExecuteNonQuery()
$sqlConnection.Close()
}
else
{
Write-Host " No Results"
}
我想做的是修改查询字符串,使其返回多个结果,即它将有多个select语句,并将这些结果放入多个数据表中,然后将这些单独的数据表传递给sql server。我知道powershell有一个数据集对象,但我不确定您将如何填充它。
这可能吗?你会怎么做?