sql server将PK类型从int更改为uniqueidentifier

ana*_*kic 5 sql-server

我需要将表上的主键列类型从int更改为guid.数据库已经包含了我不想丢失的数据,并且需要考虑外键.是否有一种无痛的方式来做到这一点,或者我必须通过一个大的**脚本手动执行它?:)我将不胜感激任何建议

KM.*_*KM. 5

你必须使用脚本以艰难的方式完成它:

0)进入单用户模式
1)将新的GUID列添加到主表中,并填充它.
2)将新的FK列添加到每个子表,并使用UPDATE FROM填充它们

UPDATE c
    SET FKcolumn=p.NewGuid
    FROM ChildTable             c
        INNER JOIN ParentTable  p ON p.OldIntID=c.OldIntId
Run Code Online (Sandbox Code Playgroud)

3)删除现有的int FKs
4)删除旧的int列
5)在guid列上添加新的FKs
6)退出单用户模式

您应该能够让SQL Server Management Studio生成用于添加和删除列和键的脚本.只需在SSMS中进行更改,然后单击"生成更改脚本"工具栏图标,即可将代码剪切并粘贴到文本文件中.