最近、トランザクションをサポートするデータベースとやり取りするための新しいモジュールを公開しました。
Install-Module -Name InvokeQuery
エラーが発生した場合、明示的にロールバックする必要はありません。で作成されたアンビエント トランザクションがそれを処理Start-Transaction
します。
try {
$db = "test"
Start-Transaction
$sql = "insert into table1 values (NEWID(), 8765, 'transactions!', GETDATE())"
$rowcount = $sql | Invoke-SqlServerQuery -Database $db -UseTransaction -CUD -Verbose
Write-Host "Inserted $rowcount rows!"
$sql = "insert into table1 values (NEWID(), 5555, 'transaction too!', GETDATE())"
$rowcount = $sql | Invoke-SqlServerQuery -Database $db -UseTransaction -CUD -Verbose
Write-Host "Inserted $rowcount rows!"
Complete-Transaction
}
catch {
##Transaction will automatically be rolled back....
Write-Error $_
}
トランザクション内で明示的にロールバックする場合は、エラーをスローします。
throw 'rollback because of reason X!'
その他の例:
https://github.com/ctigeek/InvokeQueryPowershellModule/blob/master/README.md#transactions