sqlsever为标识列指定显式值_mssql2005

sqlsever为标识列指定显式值的问题,大多是大家在两个结构完全相同的表,由其中一个表插入另一个表中指定条件的数据,报如下错误:
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'*'中的标识列指定显式值。
在网上找到了解决方案,亲自试过,可以解决。
一、问题详述如下:
系统:windows2003
数据库:2005
数据库实例:wzgl2004 和wzgl2003,这两个实例都有表kc
执行语句
insert into wzgl2004.dbo.kc select * from wzgl2003.dbo.kc
就有报错信息:
"仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'wzgl2004.dbo.kc ' 中为标识列指定显式值。"

二、解决方法:

复制代码 代码如下:

SET IDENTITY_INSERT test ON
insert into wzgl2004.dbo.kc(id,name) select (id,name) from wzgl2003.dbo.kc
SET IDENTITY_INSERT test OFF

三、SET IDENTITY_INSERT的帮助知识
1、SET IDENTITY_INSERT :允许将显式值插入表的标识列中。
2、语法
SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }
参数
database
是指定的表所驻留的数据库名称。
owner
是表所有者的名称。
table
是含有标识列的表名。

3、附加:任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft SQL Server 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。 如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。
SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。
sqlsever为标识列指定显式值总结到此结束,如有疑问请联系我们www.cncnc.com.cn,中国信息港为你提供高效安全的sql数据库。

时间: 2024-10-21 18:53:15

sqlsever为标识列指定显式值_mssql2005的相关文章

在SQL Server数据库中为标识(IDENTITY)列插入显式值_MsSql

如果我们在标识列中插入值,例如: insert member(id,username) values(10,'admin') 则在查询分析器里面会返回错误信息:  引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值. 而在ASP程序中会返回错误信息:  引用内容 Microsoft OLE DB Provider for SQL Server 错误 '80040e14'  当 I

在SQL Server数据库中为标识(IDENTITY)列插入显式值

如果我们在标识列中插入值,例如: insert member(id,username) values(10,'admin') 则在查询分析器里面会返回错误信息:  引用内容 服务器: 消息 544,级别 16,状态 1,行 1 当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值. 而在ASP程序中会返回错误信息:  引用内容 Microsoft OLE DB Provider for SQL Server 错误 '80040e14' 当 ID

SQL:插入指定标识列的数据时候的小错误

异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html 后期会在博客首发更新:http://dnt.dkill.net 好久没写标识系列的代码了,刚写就报了个错 SQL: set identity_insert ShopModelBak on insert into ShopModelBak values(5,N'lll',1,1) set identity_insert ShopModelBak off 咋一看,好像没啥错啊?但

SQL Server手工插入标识列的方法_MsSql

如果我们在标识列中插入值,例如: 复制代码 代码如下: insert member(id,username) values(10,'admin')   则在查询分析器里面会返回错误信息: [plain]  引用内容   服务器: 消息 544,级别 16,状态 1,行 1   当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值.   有的情况我们需要手动插入标识列的值,例如删除了一些记录后,标识列并不连续,而我们又想把它补齐.我们利用一个开关

EntityFramework Core并发导致显式插入主键问题

前言 之前讨论过EntityFramework Core中并发问题,按照官网所给并发冲突解决方案以为没有什么问题,但是在做单元测试时发现too young,too simple,下面我们一起来看看. .NET Core 1.1单元测试问题 我们循序渐进,首先从单元测试开始说起,可能其中就有你在.NET Core上进行单元测试会遇到的问题,别着急,不妨一看.我们需要创建.NET Core类库,,如下: 接下来对project.json进行如下修改. { "version": "

SQL Server手工插入标识列的方法

如果我们在标识列中插入值,例如: 复制代码 代码如下:insert member(id,username) values(10,'admin') 则在查询分析器里面会返回错误信息: [plain]  引用内容   服务器: 消息 544,级别 16,状态 1,行 1   当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值.   有的情况我们需要手动插入标识列的值,例如删除了一些记录后,标识列并不连续,而我们又想把它补齐.我们利用一个开关可以让

漫谈SQL Server中的标识列(二)

server 这篇文章主要总结一下标识列在复制中的处理方法 1.快照复制   在快照复制中,通常无须考虑标识列的属性. 2.事务复制   举例:   发布数据库A,订阅数据库B,出版物为T_test_A,订阅表为T_test_B   CREATE TABLE T_test_A (ID int IDENTITY(1,1),  Name varchar(50) )   CREATE TABLE T_test_B (ID int IDENTITY(1,1),  Name varchar(50) )  

DBCC CHECKIDENT 重置数据库标识列从某一数值开始_MsSql

DBCC CHECKIDENT(N'dbo.Orders', RESEED, 0); DBCC CHECKIDENT 语法 DBCC CHECKIDENT ( table_name [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ] ) [ WITH NO_INFOMSGS ]参数 table_name 是要对其当前标识值进行检查的表名.指定的表必须包含标识列.表名必须符合标识符规则. NORESEED 指定不应更改当前标识值. RESE

DBCC CHECKIDENT 重置数据库标识列从某一数值开始

DBCC CHECKIDENT(N'dbo.Orders', RESEED, 0); DBCC CHECKIDENT 语法 DBCC CHECKIDENT ( table_name [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ] ) [ WITH NO_INFOMSGS ]参数 table_name 是要对其当前标识值进行检查的表名.指定的表必须包含标识列.表名必须符合标识符规则. NORESEED 指定不应更改当前标识值. RESE