Replace identity column from int to bigint

后端 未结 1 1262
[愿得一人]
[愿得一人] 2021-02-11 19:31

I am using SQL Server 2008, and I have a table that contains about 50 mill rows.

That table contains a primary identity column of type int.

I want t

1条回答
  •  广开言路
    2021-02-11 20:02

    Well, it won't be a quick'n'easy way to do this, really....

    My approach would be this:

    1. create a new table with identical structure - except for the ID column being BIGINT IDENTITY instead of INT IDENTITY

      ----[ put your server into exclusive single-user mode here; user cannot use your server from this point on ]----

    2. find and disable all foreign key constraints referencing your table

    3. turn SET IDENTITY_INSERT (your new table) ON

    4. insert the rows from your old table into the new table

    5. turn SET IDENTITY_INSERT (your new table) OFF

    6. delete your old table

    7. rename your new table to the old table name

    8. update all table that have a FK reference to your table to use BIGINT instead of INT (that should be doable with a simple ALTER TABLE ..... ALTER COLUMN FKID BIGINT)

    9. re-create all foreign key relationships again

    10. now you can return your server to normal multi-user usage again

    0 讨论(0)
提交回复
热议问题