在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