Powershell Invoke-sqlcmd hält die Verbindung offen und versucht, sie wiederzuverwenden

Ich habe ein Powershell-Skript, das verwendetinvoke-sqlcmd Anwenden von Skripten auf eine Reihe von Entwicklungsdatenbanken. Ich durchlaufe eine Liste von Skripten und vergleiche sie mit dem aktuellen Release-Stand der Datenbank. Anschließend wende ich die erforderlichen Skripten an, um die Datenbank auf den Release-Stand zu bringen, auf dem sie sein muss. Bestimmte Datenbanken sind Referenzdatenbanken und befinden sich im Status READ_ONLY. Ich verbinde mich mit diesen Datenbanken, führe ein alter DB-Skript aus, indem ich sie auf READ_WRITE setze, wende das Skript an und ändere dann die Rückseite auf READ_ONLY. Insgesamt funktioniert das Skript gut. Das Problem besteht darin, dass PowerShell zum ersten Mal eine Verbindung zur Datenbank herstellt, das erste Skript anwendet und dann die Datenbank zurück auf READ_ONLY ändert, wenn in der Datenbank Objekte gesperrt sind. Ich habe es auf die vorherige Verbindung und eine Shared_Transaction_Workspace-Sperre (sys.dm_tran_locks) zurückgeführt, um die vorherige Powershell-Verbindung zu ermitteln. Warum ist diese Verbindung nach dem noch offen?invoke-sqlcmd ist abgeschlossen und kann ich etwas dagegen tun? Kann ich zwingeninvoke-sqlcmd Verwenden einer neuen Verbindung für jeden Aufruf des Cmdlets

Ich habe versucht, die fehlerhafte Verbindung zu beenden und dann erneut zu versuchen, aber ich denke, es gibt etwas Besseres.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage