如何在SQL Server 2008中一次删除多个表的标识规范

时间:2015-01-02 10:20:38

标签: sql sql-server database sql-server-2008 sql-server-2008-r2

我在数据库中共有109个表,现在我正在迁移到带有标识插入的amazon服务器,现在我想删除所有表的自动增量列规范。如何在SQL Server 2008中为所有表设置自动增量列,即标识规范为no。

例如

我有

CREATE TABLE dbo.tbl_acc
    (
    a1     NUMERIC (18) IDENTITY NOT NULL,
    a2     NUMERIC (18) NULL,
    a3     VARCHAR (4000) NULL,
    a4     VARCHAR (3999) NULL,

    CONSTRAINT PK_tbl_acc PRIMARY KEY (a1)
    )
GO

现在我想删除IDENTITY。不仅仅是剩余的所有表格。

1 个答案:

答案 0 :(得分:0)

设置IDENTITY属性后,无法将其删除。您可以在SET IDENTITY_INSERT <table_name> ON/OFF的会话中暂时停用它,但无法将其永久转换回numeric列。

以下是我在类似情况下的表现:

  1. 删除主键约束
  2. 在表格中添加另一个numeric列(让我们称之为a10)并将其值设置为a1
  3. 的值
  4. 删除a1
  5. a10重命名为a1
  6. 您可以构建一个动态SQL脚本来为所有表执行此操作。可以从INFORMATION_SCHEMA.TABLES查询表格列表,它们来自INFORMATION_SCHEMA.TABLE_CONSTRAINTS的约束。