数据库 A,B(数据库表结构都相同)  A库a表 有数据  我想 把这个 a表里的数据copy到 B库a表里面来 
但是 a表式自动增长列 insert into B..a select * from A..a  报出了 自动增长列错误  
我现在想 把 那个自动增长 用一条修改约束的 语句解决掉  数据copy 完了 在加上去                 

解决方案 »

  1.   

    SET IDENTITY_INSERT
    允许将显式值插入表的标识列中。语法
    SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }参数
    database是指定的表所驻留的数据库名称。owner是表所有者的名称。table是含有标识列的表名。注释
    任何时候,会话中只有一个表的 IDENTITY_INSERT 属性可以设置为 ON。如果某个表已将此属性设置为 ON,并且为另一个表发出了 SET IDENTITY_INSERT ON 语句,则 Microsoft® SQL Server™ 返回一个错误信息,指出 SET IDENTITY_INSERT 已设置为 ON 并报告此属性已设置为 ON 的表。如果插入值大于表的当前标识值,则 SQL Server 自动将新插入值作为当前标识值使用。SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。权限
    执行权限默认授予 sysadmin 固定服务器角色和 db_owner 及 db_ddladmin 固定数据库角色以及对象所有者。示例
    下例创建一个含有标识列的表,并显示如何使用 SET IDENTITY_INSERT 设置填充由 DELETE 语句导致的标识值中的空隙。-- Create products table.
    CREATE TABLE products (id int IDENTITY PRIMARY KEY, product varchar(40))
    GO
    -- Inserting values into products table.
    INSERT INTO products (product) VALUES ('screwdriver')
    INSERT INTO products (product) VALUES ('hammer')
    INSERT INTO products (product) VALUES ('saw')
    INSERT INTO products (product) VALUES ('shovel')
    GO-- Create a gap in the identity values.
    DELETE products 
    WHERE product = 'saw'
    GOSELECT * 
    FROM products
    GO-- Attempt to insert an explicit ID value of 3;
    -- should return a warning.
    INSERT INTO products (id, product) VALUES(3, 'garden shovel')
    GO
    -- SET IDENTITY_INSERT to ON.
    SET IDENTITY_INSERT products ON
    GO-- Attempt to insert an explicit ID value of 3
    INSERT INTO products (id, product) VALUES(3, 'garden shovel').
    GOSELECT * 
    FROM products
    GO
    -- Drop products table.
    DROP TABLE products
    GO
      

  2.   

    大虾 小第初学者  你就告诉我  这个问题 现在用语句怎么写
    SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }   我刚式了  
    set IDENTITY_INSERT address_t off
    set IDENTITY_INSERT address_t on都不行
      

  3.   

    我现在  有很多表要 copy 如果都 手动一个一个去 修改  很麻烦  想用脚本执行
      

  4.   

    如果标的字段不多的话,可以直接插入。
    insert into B..a select col1,col2... from A..aselect列表不查询b..a对应标识列。
      

  5.   

    我是所有数据 copy 过来  就是 新的表  是自动增长的 所以不行 想用sql语句 该那个自动增长  然后再加上去
      

  6.   

    SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }用这个开关自增列就行了。
      

  7.   

    DECLARE @pkid NUMERIC
    SELECT @pkid=IDENT_CURRENT('cs_cons_pact_del_tb')SET IDENTITY_INSERT cs_cons_pact_del_tb ON.....SET IDENTITY_INSERT cs_cons_pact_del_tb OFFDBCC CHECKIDENT ('cs_cons_pact_del_tb',RESEED,@pkid)
    同样的问题 
    我是如此解决的