我正在设计一个带有 SQL 数据库的标准 ASP.Net 站点。我有一个数据库模式,并且在测试期间,我正在更改其他任务中的数据类型,其中包含的数据实际上并不那么重要。
由于旧数据与新规则不匹配,我不断收到错误消息。这并不重要,我很乐意清除所有内容,但目前,我必须将数据库导出/发布到 .sql 文件,然后从头开始导入 - 这很耗时。
是否有我错过的快速按钮/功能允许您将自动编号/ID 重置为 1 并删除所有内容,或者只是加快我目前的工作速度?
我正在设计一个带有 SQL 数据库的标准 ASP.Net 站点。我有一个数据库模式,并且在测试期间,我正在更改其他任务中的数据类型,其中包含的数据实际上并不那么重要。
由于旧数据与新规则不匹配,我不断收到错误消息。这并不重要,我很乐意清除所有内容,但目前,我必须将数据库导出/发布到 .sql 文件,然后从头开始导入 - 这很耗时。
是否有我错过的快速按钮/功能允许您将自动编号/ID 重置为 1 并删除所有内容,或者只是加快我目前的工作速度?
您可以采取一些选择,“最快”实际上取决于您的数据库。
首先回答您关于播种等问题 - 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
这是删除表中所有数据的快速方法:
TRUNCATE TABLE YourTableName
您可以编写一个脚本来截断所有表。
另一种方法是只删除表并重新创建它。
如果您真的想删除所有数据,那么您可以分离数据库并创建一个全新的数据库;这有点极端,但可能比先丢弃所有内容要快。
为什么不编写一些 T-SQL 代码来删除(或截断,甚至更快)所有表?在清除表时要小心考虑您的完整性规则:在清除包含主键的表之前,请务必先清除包含外键的表。
如果您只需要清除数据,那么只需编写一个脚本来截断每个表中的所有数据。truncate 命令还重置任何 IDENTITY 字段。
TRUNCATE TABLE myTable
对于您拥有的每张桌子。然后每次运行该脚本。
正如其他人所建议的那样,我发现最好维护一个从头开始构建数据库的脚本,并且可以在重建数据库之前拆除数据库。就像开发应用程序的其余部分一样开发此脚本。我发现通过脚本理解数据库比通过 GUI 构建数据库更容易,尤其是在存在复杂关系、触发器等的情况下。
如果您有其他开发人员,它也很有用,并且可能比复制您的工作数据库并将其交给其他开发人员更快且更不容易出错。
在发布时,您可以冻结该脚本,然后为下一个版本创建增量脚本,该版本仅包含从初始模式到新模式的更改。这也可以在重新创建之前拆除在增量中创建的新对象,以便可以轻松地重新运行它而无需擦除整个数据库。
如果您使用 Visual Studio 2010,那么
打开解决方案的 App_Data 文件夹并双击 MDF 文件。右键单击您的表格,在菜单中选择“显示表格数据”。选择所有行并删除所有行。