批量为数据库表设置IDENTITY_INSERT ON(开启增长列插入)

作者:翅膀的初衷 来源:www.jiniannet.com 发布时间:2015-08-18 查看数:8895

在SQL Server中,如果需要在自增长列插入值,我们必须手动执行 SET IDENTITY_INSERT 表名 ON 命令,方能进行数据插入操作。但是如果我需要为整个数据库的表执行该操作呢? 特别是数据库中还有部分表不存在自增长列的情况下!

别急,这段小脚本,可以轻松解决这个问题(附有详细注释)

DECLARE tables_cursor CURSOR 
FOR 
select [name] from sysobjects where xtype='u' --查找所有用户表
OPEN tables_cursor  --开启游标
DECLARE @tablename sysname 
FETCH NEXT FROM tables_cursor INTO @tablename 
WHILE (@@FETCH_STATUS <> -1) 
BEGIN 

IF((Select OBJECTPROPERTY(OBJECT_id(@tablename),'TableHasIdentity'))=1) --判断表是否存在自增长列
EXEC('set IDENTITY_INSERT '+@tablename+' ON') --设置IDENTITY_INSERT为ON

FETCH NEXT FROM tables_cursor INTO @tablename 
END 
DEALLOCATE tables_cursor

原创作者 作者:翅膀的初衷 原文地址:http://www.jiniannet.com