Nun, was ich hier versuche, ist das Ablegen der Datenbank von meinem SQL Server auf der Grundlage einer beliebigen Bedingung (innerhalb eines IF-Block), z. Wenn die Datenbank existiert, löschen und neu erstellen.SQL Server 2008 R2: Drop-Datenbank auf Bedingung
ich folgenden Code verwende:
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
DROP DATABASE practice
END
Dieser Code für ein paar Minuten auf die Ausführung hält und antwortet dann mit einer Fehlermeldung,
Msg 3702, Level 16, State 4, Line 1
Cannot drop database "practice" because it is currently in use.
Dann für einen weiteren Versuch ich eine GO-Anweisung innerhalb Mein Code, um den Ausführungsfluss zu trennen, mit folgendem Code (HINWEIS: Dies hat auch eine Datenbankanweisung):
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
GO
DROP DATABASE practice
GO
CREATE DATABASE practice
END
Jetzt wirft er diesen Fehler:
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'master'.
Msg 3702, Level 16, State 4, Line 1
Cannot drop database "practice" because it is currently in use.
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near 'END'
Ich weiß nicht, ob ich bin etwas fehlt, oder gibt es eine Abhilfe, die getan werden muss.
Ich wäre auch an besseren Alternativen interessiert, um diesen Zweck zu erfüllen, wenn überhaupt.
Ich weiß nicht, ob das überhaupt machbar ist.
Grüße, Shanks