sqlserver2008如何让sqlserver的自增字段用sql语句打开加1或者关闭(我用了 alter table a alter column ID int identity(1,1) Msg 156, Level 15, State 1, Line 3
关键字 'identity' 附近有语法错误。失败
: SET IDENTITY_INSERT dbo.a OFF 失败的最后
[20:42:41] bruce says: Alter table table1 alter column column1 Identity(1,1);Alter table table1 ADD CONSTRAINT column1_def Identity(1,1) FOR column1they all can not work,也失败)这些id来自原始数据源,他的id并不是连续的。 所以无法加一个字增字段复制来解决。问题如何让sqlserver的自增字段用sql语句打开加1或者关闭
(我用etl把数据导过来 之后必须用pk 自增的id来让.net开发 使用)
关键字 'identity' 附近有语法错误。失败
: SET IDENTITY_INSERT dbo.a OFF 失败的最后
[20:42:41] bruce says: Alter table table1 alter column column1 Identity(1,1);Alter table table1 ADD CONSTRAINT column1_def Identity(1,1) FOR column1they all can not work,也失败)这些id来自原始数据源,他的id并不是连续的。 所以无法加一个字增字段复制来解决。问题如何让sqlserver的自增字段用sql语句打开加1或者关闭
(我用etl把数据导过来 之后必须用pk 自增的id来让.net开发 使用)
drop column id
goalter table tb
add id int identity(1,1)select * from tb
SET IDENTITY_INSERT tablename ON
--当然插入完毕记得要设置不允许显式插入自增列
SET IDENTITY_INSERT tablename OFF
--设置允许显式插入自增列
SET IDENTITY_INSERT tablename ON
--当然插入完毕记得要设置不允许显式插入自增列
SET IDENTITY_INSERT tablename OFF删除重建一--------------不可能的
因为原有的不连续的id 的植是一定要保留.否则重建会丢失那些很重要的id 值
(
id int identity,
[name] varchar(100)
)insert temp
select 'a' union all
select 'b'--#1. 备份表
--#2. 把数据全部写到临时表
select [newid] = id + 1, [name] into #temp from temp
--#3. 清空原表
truncate table temp
--#4. 设置允许插入id
SET IDENTITY_INSERT temp ON
--#5. 插入数据
insert into temp(id, [name])
select * from #temp
--36. 设置不允许插入id
SET IDENTITY_INSERT temp OFF--结果
select * from temp
SET IDENTITY_INSERT tbname ON
insert 操作...
SET IDENTITY_INSERT tbname OFF这个失败的?
那就是你insert的语句问题
SET IDENTITY_INSERT aa ON
insert aa(a,id) values(2,3);
SET IDENTITY_INSERT aa OFF
update aa set id=10 where id=1;
SET IDENTITY_INSERT aa OFFMsg 8102, Level 16, State 1, Line 3
Cannot update identity column 'id'.插入解决 ,更新这个id 如何做>?
把数据导完后(这个使用数据流 )
再 启用 SET IDENTITY_INSERT aa OFFSET IDENTITY_INSERT aa ONSET IDENTITY_INSERT aa OFF 这2个如何用ssis的什么项目来实现 (我用了‘Execute SQL task’死活通不过)。 关键这3步必须放到一个session里 。 不知道如何用ssis来实现