批量为数据库表设置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