Powershell Invoke-sqlcmd держит соединение открытым и пытается использовать его повторно

У меня есть скрипт Powershell, который используетinvoke-sqlcmd применять сценарии к ряду баз данных разработки. Я перебираю список сценариев и сравниваю его с текущим уровнем выпуска базы данных, а затем применяю необходимые сценарии, чтобы вывести БД на тот уровень выпуска, на котором она должна быть. Некоторые базы данных являются справочными базами данных и находятся в состоянии READ_ONLY. Я подключаюсь к этим базам данных, запускаю сценарий изменения базы данных, устанавливая для них значение READ_WRITE, применяю сценарий, затем меняю обратно значение READ_ONLY. В целом сценарий работает хорошо, проблема в том, что когда PowerShell сначала открывает соединение с базой данных и применяет первый сценарий, а затем переходит к преобразованию базы данных в READ_ONLY, база данных заблокировала объекты. Я'мы проследили его до предыдущего соединения и блокировки Shared_Transaction_Workspace (sys.dm_tran_locks) для того, что выглядит как предыдущее соединение powershell. Почему это соединение остается открытым послеinvoke-sqlcmd закончил и могу ли я что-нибудь с этим сделать? Могу ли я заставитьinvoke-sqlcmd использовать новое соединение для каждого вызова командлета?

Я пробовал грязное исправление, убившее нарушающее соединение и затем повторяя попытку соединения, но я думаю, что есть что-то лучшее.

Ответы на вопрос(3)

Ваш ответ на вопрос