在Powershell函数中持有SQL连接

时间:2015-03-05 17:50:26

标签: sql-server-2008 powershell

我试图在函数中保存SQL连接,以便我可以调用它,而不是每次都复制代码。来自这里的用户将其提交给我之前发布的一个问题。我正在尝试复制该过程,但我收到了错误:

  

您无法在空值表达式上调用方法

代码如下:

$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

1 个答案:

答案 0 :(得分:1)

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

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

Execute-SQL $query $connection