60

私は、Microsoft SQL Server 2008 R2 SP1 で実験と学習を行っています。私は多くの実験を行ったデータベースを持っています。今、私はそれを落として再作成したいと思います。そのため、データベースから作成スクリプトを抽出して削除し、スクリプトを使用して再作成します。驚いたことに、すべてのテーブル、キーなどはまだそこにあります。データベースを最初から再構築できるように、データベースを削除するにはどうすればよいですか?

4

6 に答える 6

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

CREATE DATABASE yourDBname
于 2012-09-11T06:58:23.713 に答える
33

コードの彼の部分についてAnandPhadkeに+1

このコードは、データベースへのすべてのアクティブな接続を閉じてから削除します

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
于 2014-11-21T08:18:33.030 に答える
11

DBName を複数回入力する必要があると、エラーが発生しやすくなります。ある時点で、一貫性のないエントリと意図しない結果で実行されます。

変数をサポートする 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
于 2016-02-10T20:20:09.807 に答える
1

データベースから作成スクリプトを抽出します

これにより、データベース内のすべて (テーブル、キーなど) の作成スクリプトが抽出されます。空のデータベースを作成するだけの場合は、実行するだけですCREATE DATABASE <dbname>

于 2012-09-11T06:56:51.263 に答える