Ich entwickle mein Schema in SQL Server 2008 aktiv und möchte mein Drop / Create-Datenbankskript häufig erneut ausführen. Wenn ich renne
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
Ich bekomme oft diesen Fehler
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Wenn Sie im Objekt-Explorer-Bereich mit der rechten Maustaste auf die Datenbank klicken und im Kontextmenü die Aufgabe Löschen auswählen, gibt es ein Kontrollkästchen, mit dem Sie "vorhandene Verbindungen schließen" können.
Gibt es eine Möglichkeit, diese Option in meinem Skript anzugeben?
sql
sql-server
Nick
quelle
quelle
Gehen Sie zu Management Studio und führen Sie alles aus, was Sie beschreiben. Klicken Sie statt auf OK auf Skript. Es wird der Code angezeigt, der ausgeführt wird und den Sie dann in Ihre Skripte integrieren können.
In diesem Fall möchten Sie:
quelle
Gemäß der Dokumentation zu ALTER DATABASE SET besteht weiterhin die Möglichkeit, dass Sie nach dem Einstellen einer Datenbank in den SINGLE_USER-Modus nicht auf diese Datenbank zugreifen können:
Ein vollständiges Skript zum Löschen der Datenbank mit vorhandenen Verbindungen kann also folgendermaßen aussehen:
quelle
Ich weiß, dass es zu spät ist, aber vielleicht hilft es jemandem. Wenn Sie dies verwenden, schalten Sie Ihre Datenbank offline
quelle
Ich habe versucht, was hgmnz auf SQL Server 2012 sagt.
Management für mich geschaffen:
quelle
ROLLBACK IMMEDIATE
Erklärung beigefügt. Dassp_delete_database_backuphistory
kommt von dem „Delete Backup und Verlaufsinformationen für Datenbanken wiederherstellen“ zu überprüfen.ALTER DATABASE SET SINGLE_USER ...
Wenn Sie "Vorhandene Verbindungen schließen" aktivieren, wird dies nicht generiert, wenn keine aktuellen Verbindungen zum Schließen vorhanden sind.Versuchen Sie diesen C # -Code, um Ihre Datenbank zu löschen
public static void DropDatabases (string dataBase) {
quelle