我们可以在Windows Powershell ISE中使用SQLTransaction吗?

时间:2011-12-23 10:14:36

标签: powershell

我尝试在Powershell ISE中使用SQLDataAdapter对象及其方法如下

    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter 

并使用下面的方法

$SqlAdapter.Fill($DataSet)

它为我工作。但是当我尝试下面的时候

$trans= New-Object System.Data.SqlClient.SqlTransaction

并使用像这样的方法

$trans = $connection.BeginTransaction("SampleTransaction")

,其中

$connection= New-Object System.Data.SqlClient.SqlConnection

它给我错误

  

使用“1”参数调用“BeginTransaction”的异常:“无效   操作。连接已关闭。“在线:1个字符:41   + $ trans = $ SqlConnection.BeginTransaction<<<< ( “SampleTransaction”)       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:DotNetMethodException

有人对此有任何想法吗?

2 个答案:

答案 0 :(得分:0)

好像你还没有打开连接。

你是否只是缺席:

 $connection.Open();

那是我的第一次猜测。

答案 1 :(得分:0)

我同意Gisli打开连接。你的其余代码在哪里?另一种方法是使用命令对象并将命令事务属性分配给命令:

$cmd=new-object system.Data.SqlClient.SqlCommand($sql,$conn)
$cmd.Transaction = $transaction

这是我们在adolib模块中所做的,它是SQL Server Powershell Extensions的一部分。查看Modules \ adolib \ adolib.psm1。