Ich experimentiere und lerne mit Microsoft SQL Server 2008 R2 SP1. Ich habe eine Datenbank, wo ich viele Experimente gemacht habe. Jetzt möchte ich es fallen lassen und neu erstellen. Also extrahiere ich das Erstellungsskript aus der Datenbank, ich lösche es und ich benutze das Skript um es neu zu erstellen. Zu meiner Überraschung sind alle Tische, Schlüssel usw. noch da. Wie lösche ich die Datenbank, damit ich die Datenbank von Grund auf neu erstellen kann?Löschen und Wiederherstellen von Datenbanken in Microsoft SQL Server
Antwort
USE master
IF EXISTS(select * from sys.databases where name='yourDBname')
DROP DATABASE yourDBname
CREATE DATABASE yourDBname
ich extrahiere die Erstellung Skript aus der Datenbank
dies die Schaffung Skript für alles, was in der Datenbank extrahiert (Tabellen, Schlüssel usw.). Wenn Sie einfach eine leere Datenbank erstellen möchten, führen Sie einfach CREATE DATABASE <dbname>
+1 bis AnandPhadke für seinen Teil des Codes
Dieser Code wird alle aktiven Verbindungen zu der Datenbank schließen und legen Sie es dann
WHILE EXISTS(select NULL from sys.databases where name='YourDBName')
BEGIN
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';'
FROM MASTER..SysProcesses
WHERE DBId = DB_ID(N'YourDBName') AND SPId <> @@SPId
EXEC(@SQL)
DROP DATABASE [YourDBName]
END
GO
CREATE DATABASE YourDBName
GO
Das mehrfache Eingeben des DBName ist fehleranfällig und wird irgendwann mit inkonsistenten Einträgen und unbeabsichtigten Konsequenzen ausgeführt.
Die Antworten von AnandPhadke oder Pierre mit variabler Unterstützung wären für mich bevorzugt.
DECLARE @DBName varchar(50) = 'YourDatabaseName'
USE master
IF EXISTS(select * from sys.databases where name= @DBName)
EXEC('DROP DATABASE ' + @DBName)
EXEC('CREATE DATABASE ' + @DBName)
oder
DECLARE @DBName varchar(50) = 'YourDatabaseName'
WHILE EXISTS(select NULL from sys.databases where name = @DBName)
BEGIN
DECLARE @SQL varchar(max)
SELECT @SQL = COALESCE(@SQL,'') + 'Kill ' + Convert(varchar, SPId) + ';' FROM MASTER..SysProcesses WHERE DBId = DB_ID(@DBName) AND SPId <> @@SPId
EXEC(@SQL)
EXEC('DROP DATABASE ' + @DBName)
END
GO
Dies funktioniert am besten für mich: (?)
if exists (select name from sys.databases where name='YourDBName')
alter database YourDBName set single_user with rollback immediate
go
if exists (select name from sys.databases where name='YourDBName')
drop database YourDBName
Das beantwortet die Frage nicht wirklich. Wenn Sie eine andere Frage haben, können Sie sie durch Klicken auf [Frage stellen] (http://stackoverflow.com/questions/ask) stellen. Sie können [Kopfgeld hinzufügen] (http://stackoverflow.com/help/privileges/set-bounties) hinzufügen, um mehr Aufmerksamkeit auf diese Frage zu lenken, sobald Sie genug [Reputation] haben (http://stackoverflow.com/help/). Whats-Reputation). - [Aus Bewertung] (/ review/low-quality-posts/12598382) –
Ich glaube, du hast diese Antwort falsch eingeschätzt, @KhanImranAli. Dieser versucht zu antworten, obwohl schlecht. Dies sollte durch Abstimmung, nicht durch Ausmerzen und negative Überprüfung, moderiert werden. – Palec
Bitte erläutern Sie, was Ihr Code macht und wie er die Frage beantwortet. Wenn Sie ein Code-Snippet als Antwort erhalten, wissen Sie möglicherweise nicht, was Sie damit machen sollen. Antwort sollte dem OP und zukünftigen Besuchern Orientierung geben. Die Idee hinter Ihrem Code ist sehr hilfreich, um das Problem zu verstehen und Ihre Lösung anzuwenden oder zu modifizieren. – Palec
SQL Server 2016 (und höher) Unterstützung einer Linie und Atom-Syntax DROP DATABASE IF EXISTS database_name
REF : https://msdn.microsoft.com/en-us/library/ms178613.aspx
- 1. Microsoft SQL 2005 Server wiederherstellen Fehler MDF--Datei
- 2. Verstecken von Datenbanken für eine Anmeldung auf Microsoft Sql Server 2008R2 und höher
- 3. SQL Server - erhalten alle Datenbanken und Dateien
- 4. Übertragen von Datenbanken zwischen SQL Server-Instanzen
- 5. Download SQL SERVER AGENT - Microsoft SQL Server
- 6. Abfragen von mehreren Datenbanken auf SQL Server
- 7. Farbcodierung SQL Server 2008-Datenbanken
- 8. Microsoft SQL-Server: überprüfen Benutzer eigene Berechtigungen
- 9. Microsoft SQL Server, Apache und PHP Fehler
- 10. Die Größe von MySQL- und SQL Server-Datenbanken
- 11. Ändern Sie SQL-Code und Abfragen in Microsoft SQL Server
- 12. Löschen von SQL-Server-Datenbank
- 13. freeTDS bash: Ausführen von SQL-Abfragen in Microsoft SQL Server
- 14. SQL Server 2008-Datenbank zu SQL Server 2000 wiederherstellen
- 15. Ausführen von SQL-Funktionen in R, Microsoft SQL Server
- 16. Wiederherstellen einer Tabelle nur in SQL Server
- 17. Microsoft SQL Server Wie Schlüsselwort
- 18. Wie Master-DB in SQL Server 2008 Express wiederherstellen?
- 19. Microsoft SQL Server einfügen von Select-Abfrage
- 20. Wiederherstellen einer SQL Server 2000-Sicherung auf SQL Server 2012
- 21. Von Microsoft Access 2007 zu Sql Server 2005 wechseln
- 22. Sichern von SQL-Datenbank von Microsoft SQL-Server
- 23. Löschen von doppelten Datensätzen in SQL Server?
- 24. Löschen von doppelten Datensatz in SQL Server
- 25. Datenbanken in Entity Framework erstellen und löschen
- 26. Microsoft SQL-Abfrage Server verbessern
- 27. Anwendung, die in SQL Server und Oracle-Datenbanken funktioniert
- 28. SQL Server-Datenbank löschen
- 29. Verbinden mit Microsoft SQL Server mit Python
- 30. Einfügen in Microsoft SQL Server Benutzerdatenbank fehlgeschlagen
Sie haben Recht, meine Frage war dumm. Tatsächlich wurden die Tabellen, die ich weiterhin sah, in der Master-Datenbank und nicht in meiner Datenbank erstellt. –
Das hat mir sehr geholfen! –