Sql Server - 将列从UniqueIdentifier更改为varchar(128) - 向后兼容性?

时间:2013-08-26 18:15:28

标签: sql-server database-schema uniqueidentifier backwards-compatibility

我正在更改Sql Server(2008)数据库,将现有的列类型从UUID更改为varchar(128) - 列,我们称之为引用最初用于保存参考项目的ID,该项目提供了有关行中数据的更多信息,但现在业务需求已更改,我们只是允许自由格式文本。该列没有设置外键,因此不存在任何中断关系。

目前我最担心的是与现有存储过程的向后兼容性。不幸的是,数据库非常庞大而且非常陈旧,并且在整个设计中包含数百个存储过程。我非常担心做出可能会破坏现有存储过程的更改。

我知道这是一个已加载的问题,但 一般 ,是否可以将UUID列转换为varchar列而不会产生有害影响?考虑到UUID可以表示为字符串,似乎任何插入或查询UUID列的现有存储过程仍然有效。

1 个答案:

答案 0 :(得分:1)

我已尝试执行以下步骤,但我没有看到任何问题,所以我认为您可以继续更改列数据类型:

  1. 使用列类型作为唯一标识符创建表。
  2. 创建存储过程以通过NewID()函数将值插入该表。
  3. 执行存储过程,插入数据时没有任何问题。
  4. 现在,我将列类型更改为varchar并再次执行存储过程。
  5. 程序运行正常,没有任何问题,并插入了数据。
  6. 因此,答案是肯定的,您可以更改列数据类型。