SQL Server 将列从 varchar(50) 重构为 uniqueidentifier 和周边问题

sup*_*cal 2 sql sql-server refactoring

message在数据库中有一个表,几乎有一百万行。它有一externalId列是varchar(50). 存储在其中的值是 guid 但我想将此列更新为uniqueidentifier.

所以我想我要添加一个新的列,它是uniqueidentifier. 将所有值复制到此列,然后删除原始列。然后我将此列重命名为externalId.

我的问题是有数百个存储过程等,我需要确保我没有破坏任何东西。我还必须对所有代码进行 grep 并进行更改,以便我们期望使用 Guid 而不是字符串。(我正在使用 C#)

有没有人有一些提示或建议?

我会不会更好地只复制此列而不触及现有列,并使任何对其进行选择的代码使用 guid 列而不是字符串(目前它有时会超时!)。我还必须更新任何代码,然后插入该表以插入 guid ......)

我喜欢传统的废话………………

Joe*_*lli 6

你可以简单地

alter table message
    alter column externalId uniqueidentifier
Run Code Online (Sandbox Code Playgroud)

风险在于,如果列中存储的任何值不是 guid,您将看到如下错误:

Conversion failed when converting from a character string to uniqueidentifier.
Run Code Online (Sandbox Code Playgroud)