小编典典

需要更改生产数据库中的列类型(SQL Server 2005)

sql

我需要编写TSQL脚本来修改两列数据类型的帮助。

我们将更改两列:

  • uniqueidentifier-> varchar(36) * 具有主键约束
  • xml-> nvarchar(4000)

我主要关心的是脚本的生产部署…

该表已被一个每小时获得数千次点击的公共网站积极使用。因此,我们需要脚本快速运行,而又不影响前端的服务。另外,如果发生错误,我们需要能够自动回滚事务。

幸运的是,该表仅包含约25行,因此我猜测更新会很快。

该数据库是SQL Server 2005。

(仅供参考-类型更改是必需的,因为第三方工具与SQL
Server的xml和uniqueidentifier类型不兼容。我们已经测试过dev中的更改,并且更改没有功能性问题。)


阅读 179

收藏
2021-05-16

共1个答案

小编典典

正如David所说的,在生产数据库中执行脚本而不进行备份或停止站点不是最好的主意,也就是说,如果您只想在一个行数减少的表中进行更改,则可以准备一个脚本来:

  • 开始交易
  • 创建具有所需最终结构的新表。
  • 将数据从原始表复制到新表
  • 将旧表重命名为例如original_name_old
  • 将新表重命名为original_table_name
  • 结束交易

这将以名为原始表的表结尾,但表具有您想要的新结构,此外,您还使用备份名称维护原始表,因此,如果要回滚更改,可以创建脚本来执行以下操作:简单删除新表并重命名原始表。

如果表具有外键,脚本将稍微复杂一些,但是仍然可以进行很多工作。

2021-05-16