首页 > 解决方案 > 在一个连接中将数组中的 PowerShell 值插入 SQL Server 表

问题描述

如果我想在一个连接中插入数组中的值,我该如何修改下面的代码?到目前为止,我收到错误“已经有一个打开的 DataReader 与此命令关联,必须先关闭”,除非我将 $Connection.Open() 和 $Connection.Close() 放在 for 循环中,这将花费我单个连接的速度。

$list = 'aaa','bbb','cccc','ddddd','eeeee','ffff'
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
foreach($i in $list) {
    $sql ="if not exists (select 1 from [bfs] where [key] = '$i' ) 
        begin 
            insert bfs
            select '$i'
        end
    " 
$Command.CommandText = $sql
$Command.ExecuteReader()
}
$Connection.Close()

标签: sql-serverpowershell

解决方案


尝试使用 ExecuteNonQuery() 而不是 ExecuteReader()。ExecuteNonQuery() 不构建 DataReader。

...
$Command.CommandText = $sql
$Command.ExecuteNonQuery()
...

推荐阅读