Sql server 至少,您要复制(表等)

Sql server 至少,您要复制(表等),sql-server,Sql Server,这将生成一个漂亮的T-SQL脚本,您可以将其应用于任何空白数据库,从而获得您正在寻找的没有数据的结构。对我来说,与截断相比,这似乎是一个更合适的选择。这表明存储过程没有任何上述问题 关键是禁用引用完整性:)如果定义了关系,则必须删除它们,截断,然后重新创建它们。在“使用”时抛出错误:找不到存储过程“使用”@Ryan-这应该是“使用”。修正了。你可以通过按正确的顺序进行截断而不删除关系。首先是子表,然后是父表。+1-您应该可以随时通过脚本重新创建数据库-脚本也应该在版本控制中好的,我得到了向导,但

这将生成一个漂亮的T-SQL脚本,您可以将其应用于任何空白数据库,从而获得您正在寻找的没有数据的结构。对我来说,与截断相比,这似乎是一个更合适的选择。

这表明存储过程没有任何上述问题


关键是禁用引用完整性:)

如果定义了关系,则必须删除它们,截断,然后重新创建它们。在“使用”时抛出错误:找不到存储过程“使用”@Ryan-这应该是“使用”。修正了。你可以通过按正确的顺序进行截断而不删除关系。首先是子表,然后是父表。+1-您应该可以随时通过脚本重新创建数据库-脚本也应该在版本控制中好的,我得到了向导,但是当我创建脚本时,我找不到一种方法使它不向其中添加所有数据,有没有一种方法可以这样做,它只创建没有数据的数据库?快结束了。选择“发布选项”,就在“审阅摘要”之前。有一个带有选项列表的属性网格,最后一个选项是“要发布的数据类型”。仅选择架构。我更喜欢脚本而不是向导。向导会创建脚本。是否可以展开此项以显示如何检测子/父关系,然后按照它们的顺序运行截断?无法截断表“tbl_nas”,因为它正被外键约束引用。确切地说,外键约束引用的所有表都无法截断。。。。。。。那只会让你走到一半。。。。
use [dbname]
truncate table [table]
Declare @t varchar (1024) Declare tbl_cur cursor for select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' OPEN tbl_cur FETCH NEXT from tbl_cur INTO @t WHILE @@FETCH_STATUS = 0 BEGIN --EXEC ('TRUNCATE TABLE '+ @t) FETCH NEXT from tbl_cur INTO @t END CLOSE tbl_cur DEALLOCATE tbl_Cur SELECT 'ALTER TABLE ' + b.TABLE_NAME + ' WITH CHECK ADD CONSTRAINT [' + a.CONSTRAINT_NAME + '] FOREIGN KEY ' + c.COLUMN_NAME + ' REFERENCES [' + d.TABLE_NAME +'] ([' + e.COLUMN_NAME + '])' FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS a INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS b ON a.CONSTRAINT_NAME = b.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS d ON a.UNIQUE_CONSTRAINT_NAME = d.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE c ON a.CONSTRAINT_NAME = c.CONSTRAINT_NAME INNER JOIN ( SELECT f.TABLE_NAME, g.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS f INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE g ON f.CONSTRAINT_NAME = g.CONSTRAINT_NAME WHERE f.CONSTRAINT_TYPE = 'PRIMARY KEY' ) e ON e.TABLE_NAME = d.TABLE_NAME ORDER BY a.CONSTRAINT_NAME SELECT 'ALTER TABLE ' + col.TABLE_NAME + ' DROP CONSTRAINT ' + u.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.COLUMNS col INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE u ON col.TABLE_NAME = u.TABLE_NAME AND col.COLUMN_NAME = u.COLUMN_NAME INNER JOIN INFORMATION_SCHEMA.table_constraints t ON u.CONSTRAINT_NAME = t.CONSTRAINT_NAME WHERE t.CONSTRAINT_TYPE = 'FOREIGN KEY'
select 'TRUNCATE TABLE ' + name from sysobjects where xtype='U'
select 'DELETE FROM ' + name from sysobjects where xtype='U'
--// Switch to the database to be modified
USE DatabaseName;

--// The following commands need to be run for each table
--// You could perhaps automate this by using a cursor
--// First truncate the table and remove all data
TRUNCATE TABLE MyTable;

--// Also reset the identity seed
DBCC CHECKIDENT (MyTable, reseed, 1)