Powershell Wywołaj-sqlcmd utrzymując połączenie otwarte i próbując je ponownie wykorzystać

Mam skrypt PowerShell, który używainvoke-sqlcmd zastosować skrypty do serii baz danych rozwoju. Przechodzę przez listę skryptów i porównuję ją z bieżącym poziomem wersji bazy danych, a następnie stosuję wymagane skrypty, aby uzyskać DB na poziomie wydania, na którym musi być. Niektóre bazy danych są bazami danych odniesienia i są w stanie READ_ONLY. Łączę się z tymi bazami uruchom skrypt alter DB ustawiając je na READ_WRITE zastosuj skrypt, a następnie zmień z powrotem na READ_ONLY. Ogólnie skrypt działa dobrze, problem polega na tym, że PowerShell najpierw otwiera połączenie z bazą danych i stosuje pierwszy skrypt, a następnie zmienia DB z powrotem na READ_ONLY baza danych ma zablokowane obiekty. Powróciłem do poprzedniego połączenia i blokady Shared_Transaction_Workspace (sys.dm_tran_locks), co wygląda na poprzednie połączenie PowerShell. Dlaczego to połączenie jest nadal otwarte poinvoke-sqlcmd zostało zakończone i czy mogę coś z tym zrobić? Czy mogę zmusićinvoke-sqlcmd użyć nowego połączenia dla każdego wywołania polecenia cmdlet?

Próbowałem niechlujnej poprawki zabijającej obraźliwe połączenie, a następnie ponawiam połączenie, ale myślę, że jest coś lepszego.

questionAnswers(3)

yourAnswerToTheQuestion