2013-06-18 75 views
0

有人可以幫助寫一個SQL腳本,可以刪除所有的表和數據庫中的所有數據?SQL腳本完全清理數據庫?

我知道我可以做DROP tableName但我想要一個可以跨越任何數據庫並完全清理它的腳本。

注意:我不想刪除數據庫本身,只需清空所有表並刪除所有表。

注意:如果它很重要,我正在使用SQL Server Compact Edition。

+2

好像刪除了數據庫,只是創造一個新的具有相同名稱會效率更高。 –

+0

好吧 - 我會這樣做,如果我沒有找到任何其他簡單的解決方案 –

回答

1

似乎是SQL Server的存儲過程可以用於丟棄在數據庫中的所有表,就像這樣:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?" 

source

+0

我正在使用SQL CE 4.0,而不是SQL服務器。所以這不會工作,我猜。 –

+0

好的。儘管答案在這裏,但如果它能幫助別人。 – eis

1

DROP數據庫名稱。用這個。這是有益的

+0

這會完全刪除.sdf文件嗎? –

0

刪除所有表

- 刪除所有密鑰

DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR 
SET @Cursor = CURSOR FAST_FORWARD FOR 
SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + ']' 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 
LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME 
OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql 
WHILE (@@FETCH_STATUS = 0) 
BEGIN 
Exec SP_EXECUTESQL @Sql 
FETCH NEXT FROM @Cursor INTO @Sql 
END 
CLOSE @Cursor DEALLOCATE @Cursor 
GO 
EXEC sp_MSForEachTable 'DROP TABLE ?' 
GO 

刪除所有存儲過程

declare @procName varchar(500) 
declare cur cursor 
    for select [name] from sys.objects where type = 'p' 
open cur 

fetch next from cur into @procName 
     while @@fetch_status = 0 
     begin 
      if @procName <> 'DeleteAllProcedures' 
        exec('drop procedure ' + @procName) 
        fetch next from cur into @procName 
     end 

close cur 
deallocate cur 

刪除所有瀏覽

declare @procName varchar(500) 
    declare cur cursor 
     for select [name] from sys.objects where type = 'v' 
    open cur 

    fetch next from cur into @procName 
      while @@fetch_status = 0 
      begin 
         exec('drop view ' + @procName) 
         fetch next from cur into @procName 
      end 
    close cur 
    deallocate cur 

全部刪除功能

declare @procName varchar(500) 
declare cur cursor 
    for select [name] from sys.objects where type = 'fn' 
open cur 

fetch next from cur into @procName 
     while @@fetch_status = 0 
     begin 
        exec('drop function ' + @procName) 
        fetch next from cur into @procName 
     end 

close cur 
deallocate cur 
0

嘗試

TRUNCATE DATABASE 

我希望工程

+0

我不認爲你可以在數據庫上使用TRUNCATE命令,只能在表上使用。 –