0

有人可以帮助编写一个可以删除所有表和数据库中所有数据的 SQL 脚本吗?

我知道我可以做到DROP tableName,但我想要一个可以跨任何数据库工作并完全清理它的脚本。

注意:我不想删除数据库本身,只是清空所有表并删除所有表。

注意:如果重要的话,我使用的是 SQL Server Compact Edition。

4

5 回答 5

1

There seems to be a stored procedure in SQL Server that can be used for dropping all the tables in a database, like this:

EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"

(source)

于 2013-06-18T07:13:24.563 回答
1

Maybe this could help you ?

http://www.cyberciti.biz/faq/how-do-i-empty-mysql-database/

于 2013-06-18T07:13:38.160 回答
1

删除数据库名称。用这个。这很有帮助

于 2013-06-18T07:15:27.100 回答
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
于 2013-06-18T07:16:14.253 回答
0

尝试

    TRUNCATE DATABASE

我希望它有效

于 2013-06-18T07:19:03.040 回答