SQL批量插入后禁用主键并重新启用

时间:2010-06-01 10:49:11

标签: sql sql-server-2005 sql-server-2008 bulkinsert

我即将在我的数据库中运行大量数据。我已经设法找出如何在我的表上启用和重建非聚集索引,但我也想禁用/启用主键,因为我相信这会加快插入过程。

注意:这是在众多表中,所以我假设我需要一些循环来获取主键信息并运行以下内容以删除它但我不确定是否重新创建它:

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1

2 个答案:

答案 0 :(得分:8)

无法禁用IIRC聚簇索引,因为它们控制实际数据存储在页面中的位置。

我很确定你必须放下钥匙并在插入后重新创建它。根据表的大小,索引和插入,这可能无法保存任何时间。

答案 1 :(得分:4)

Run This :
//For disable all constraint of your all tables
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
//Your insert query here ......................
//After Insert Enable all the constraint
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'