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.