Подтвердить что ты не робот

Удаление и восстановление баз данных в Microsoft SQL Server

Я экспериментирую и обучаюсь с Microsoft SQL Server 2008 R2 SP1. У меня есть база данных, где я провел много экспериментов. Теперь я хотел бы бросить и воссоздать его. Поэтому я извлекаю создание script из базы данных, я удаляю его, и я использую script для его воссоздания. К моему удивлению, все таблицы, ключи и т.д. Все еще существуют. Как удалить базу данных, чтобы я мог восстановить базу данных с нуля?

4b9b3361

Ответ 1

USE master
IF EXISTS(select * from sys.databases where name='yourDBname')
DROP DATABASE yourDBname

CREATE DATABASE yourDBname

Ответ 2

+1 для AnandPhadke для его части кода

Этот код закроет все активные подключения к базе данных, а затем опустит его

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

Ответ 3

Требование, чтобы имя DBN вводилось более одного раза, подвержено ошибкам, в какой-то момент он будет выполнен с несогласованными записями и непреднамеренными последствиями.

Ответы от AnandPhadke или Pierre с переменной поддержкой были бы предпочтительными для меня.

DECLARE @DBName varchar(50) = 'YourDatabaseName'
USE master
IF EXISTS(select * from sys.databases where name= @DBName)
EXEC('DROP DATABASE ' + @DBName)

EXEC('CREATE DATABASE ' + @DBName)

или

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

Ответ 5

Я извлекаю создание script из базы данных

Извлеките создание script для всего в базе данных (таблицы, ключи и т.д.). Если вы просто хотите создать пустую базу данных, просто запустите CREATE DATABASE <dbname>

Ответ 6

Это работает лучше всего для меня:

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