Можем ли мы использовать SQLTransaction в Windows Powershell ISE? - PullRequest
0 голосов
/ 23 декабря 2011

Я пытался использовать объект SQLDataAdapter в Powershell ISE и его методы, как показано ниже

    $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

Это дает мне ошибку

Исключение, вызывающее "BeginTransaction" с аргументом (ами) "1": "Неверный операция. Соединение закрыто. "В строке: 1 символ: 41 + $ trans = $ SqlConnection.BeginTransaction <<<< ("SampleTransaction") + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: DotNetMethodException </p>

У кого-нибудь есть идеи по этому поводу?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2011

Я согласен с Гисли об открытии соединения. Где остальная часть вашего кода? Другой подход заключается в использовании объекта команды и назначении для команды свойства транзакции команды:

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

Это то, что мы делаем в модуле adolib, который является частью SQL Server Powershell Extensions . Проверьте Модули \ adolib \ adolib.psm1.

0 голосов
/ 23 декабря 2011

Похоже, вы не открыли соединение.

Вы просто скучаете:

 $connection.Open();

Это было бы мое первое предположение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...