我最近公佈了與數據庫交互,支持交易一個新的模塊:
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
的PowerShell:
提交將被使用您的範圍,所以工作示例,以保證承諾會完全像這樣之後加入明確的處置年底執行有開始交易,這是你指的是什麼? http://technet.microsoft.com/en-us/library/hh849772.aspx –
@ShawnMelton不,我試過'開始交易; Invoke-Sqlcmd'select 1 a into ## test'-ServerInstance myserver; 撤消事務處理,它仍然創建表。 – ca9163d9