禁用/启用整个数据库中的约束

--如果表结构比较少直接用sql语句拼接即可:

DECLARE @SqlString  VARCHAR(8000)
SET @SqlString = '';
SELECT   @SqlString = @SqlString + 'ALTER TABLE ' + s.[name] +  ' NOCHECK CONSTRAINT ALL ;'
FROM  sysobjects  AS  s  WHERE s.[type] = 'U'
SELECT @SqlString
EXEC(@SqlString)

--如果表结构比较多,生成的sql语句超过字符,则使用游标一个一个处理:

DECLARE curID CURSOR 
FOR
     SELECT NAME FROM sysobjects  WHERE xtype= 'u'
OPEN curID 
DECLARE @TableName VARCHAR(100)
FETCH NEXT FROM curID INTO @TableName 
WHILE (@@FETCH_STATUS = 0)
BEGIN 
     EXEC('ALTER TABLE ' + @TableName +  ' NOCHECK CONSTRAINT ALL ;');
     FETCH NEXT FROM curID INTO @TableName
END 
CLOSE curID 
DEALLOCATE curID

--开启约束,修改上面脚本中的NOCHECK成CHECK即可




posted @ 2014-01-10 14:55  2014从零开始  阅读(432)  评论(0编辑  收藏  举报