在 Powershell 函数中保持 SQL 连接

Holding SQL Connection In Powershell Function

我试图在一个函数中保持一个 SQL 连接以便我可以调用它,而不是每次都复制代码。一位来自这里的用户向我不久前发布的问题提出了建议。我正在尝试复制该过程,但出现错误:

You cannot call a method on a null-valued expression

代码如下:

$server = "TEST"
$database = "Lookups"
$connection = New-Object System.Data.SqlClient.SqlConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database;")

function Execute-SQL ($query, $connection) {
$connection.Open();
$command = new-object System.Data.SqlClient.SqlCommand($query, $connection);
$command.ExecuteNonQuery();
$connection.Close();

}

$query = "TRUNCATE TABLE [Lookups].dbo.[client_lookup]"

Execute-SQL $query, $connection

我离得还近吗?提前致歉,但我似乎找不到太多关于此的文章。

请查看完整错误:

> You cannot call a method on a null-valued expression. At line:6 char:1
> + $connection.Open();
> + ~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
>     + FullyQualifiedErrorId : InvokeMethodOnNull   You cannot call a method on a null-valued expression. At line:8 char:1
> + $connection.Close();
> + ~~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
>     + FullyQualifiedErrorId : InvokeMethodOnNull

问题是一个简单的语法错误。在 Powershell 中,参数用空格分隔,而不是像许多其他语言那样用逗号分隔。

使用正确的语法,它将起作用,如下所示:

Execute-SQL $query $connection