我正在使用 powershell 在 SQL Server 2008R2 实例上创建一组数据库,如下所示:
foreach ($database in $databases) {
# Create DB
$db = New-Object Microsoft.SqlServer.Management.SMO.Database
$db.Parent = Get-Item "SQLSERVER:\SQL\$DBServer\$Instance"
$db.Name = $database
$db.Create()
#
# Create tables, fill in data, etc
#
}
在这里,我假设要创建的数据库都不存在。如果事实证明确实如此,我想中止并回滚。在 SQL 中,我只需将其包装在BEGIN TRAN
and ROLLBACK
orCOMMIT
中,但我可以在 Powershell 中执行此操作吗?有一个 cmdlet Start-Transaction
,但它需要事务中使用的命令的支持,但$db.Create()
不需要。
对象中有没有办法SMO
进行交易?我当然可以提前检查所有的数据库,但是整个脚本相当复杂,我觉得如果我能把逻辑更接近于创建的话会更容易理解。