我有一个使用 Powershell 脚本 invoke-sqlcmd将脚本应用于一系列开发数据库。我遍历脚本列表并将其与数据库的当前版本级别进行比较,然后应用所需的脚本使数据库达到它需要的版本级别。某些数据库是参考数据库并且处于 READ_ONLY 状态。我连接到那些数据库,运行一个更改数据库脚本,将它们设置为 READ_WRITE 应用该脚本,然后将其更改回 READ_ONLY。总体而言,脚本运行良好,问题在于当 PowerShell 首先打开与数据库的连接并应用第一个脚本,然后将数据库更改回 READ_ONLY 时,数据库已锁定对象。我已经将它追溯到以前的连接和一个 Shared_Transaction_Workspace 锁 (sys.dm_tran_locks) 看起来是以前的 powershell 连接。invoke-sqlcmd已经完成,我能做些什么吗?我可以强制invoke-sqlcmd为每次调用 cmdlet 使用新连接吗?
我尝试了一个凌乱的修复,杀死有问题的连接,然后重试连接,但我认为有更好的方法。