删除数据库中所有内容并从头开始重建的最快方法?

时间:2009-11-30 11:54:51

标签: asp.net sql sql-server shortcut

我正在设计一个带有SQL数据库的标准ASP.Net站点。我有一个数据库模式,在测试期间,我正在更改其他任务中的数据类型,并且内部包含的数据确实不那么重要。

我不断收到错误,因为旧数据与新规则不符。这并不重要,我很乐意清除所有内容,但是目前,我必须将数据库导出/发布到.sql文件,然后从头开始导入 - 这非常耗时。

是否有一个我错过的快捷按钮/功能,允许您将自动编号/ ID重置为1并删除所有内容,或者只是加快我目前的操作?

6 个答案:

答案 0 :(得分:3)

您可以选择一些选项,“最快”实际上取决于您的数据库。

首先回答关于播种等问题的问题 - TRUNCATE TABLE将删除表格中的所有信息(非常快,因为它没有记录),并将重置您的标识栏。

例如:

TRUNCATE TABLE dbo.table

http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

这里的重要限制是您不能在另一个表引用的表上使用它。在这种情况下,您可以使用标准删除,然后使用DBCC CHECKIDENT

例如:

DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)

http://msdn.microsoft.com/en-us/library/ms176057.aspx

请记住删除以确保以正确的顺序删除信息(即考虑外键)。

我经常使用的另一种方法是在我想重置数据库时编写完整的拆卸/重建脚本。基本前提是在脚本开头拆除或删除所有数据库对象,然后重新创建它们。这不一定适用于所有场景,但基本任务对我来说效果很好。为了避免错误,我通常会在IF语句中添加我的drop语句,例如:

IF EXISTS 
(
     SELECT * 
     FROM information_schema.tables 
     WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
    DROP TABLE dbo.table
END

答案 1 :(得分:1)

这是删除表格中所有数据的快捷方法:

TRUNCATE TABLE YourTableName

您可以编写一个截断所有表格的脚本。

另一种方法是只删除表并重新创建它。

如果您确实要删除所有数据,那么您可以分离数据库并创建一个全新的数据库;它有点极端,但可能比先丢弃所有东西更快。

答案 2 :(得分:1)

为什么不编写一些T-SQL代码来删除(或截断,甚至更快)所有表?清除表时要小心考虑完整性规则:在清理包含主键的表之前,一直清理包含外键的表。

答案 3 :(得分:1)

如果您只需要清除数据,那么只需编写一个脚本来截断每个表中的所有数据。 truncate命令也会重置任何IDENTITY字段。

TRUNCATE TABLE myTable

对于您拥有的每张桌子。然后每次都运行该脚本。

答案 4 :(得分:0)

正如其他人所建议的那样,我发现维护一个从头开始构建数据库的脚本更可取,并且可以在重建之前拆除数据库。像开发应用程序的其余部分一样开发此脚本。我发现通过脚本比通过GUI构建数据库更容易理解数据库,特别是在存在复杂关系,触发器等的情况下。

如果您有其他开发人员,并且比复制工作数据库并将其交给其他开发人员,可能更快且更不容易出错,这也很有用。

在发布时,您可以冻结该脚本,然后为下一个版本创建增量脚本,该脚本只包含从初始模式到新模式的更改。这也可以在重新创建之前拆除在增量中创建的新对象,这样就可以轻松地重新运行它而无需擦除整个数据库。

答案 5 :(得分:0)

如果您使用Visual Studio 2010,那么

打开解决方案的App_Data文件夹,然后双击MDF文件。 右键单击您的表格,在菜单中选择"显示表格数据"。 选择所有行并删除所有行。