【问题标题】:Renaming ROWCOLGUID column when table has a FILESTREAM column当表具有 FILESTREAM 列时重命名 ROWCOLGUID 列
【发布时间】:2015-12-16 12:31:11
【问题描述】:

我有一个用于存储文档内容的表,其中包含一个 FILESTREAM 列,另一个列是 ROWGUIDCOL 列(当您有 FILESTREAM 列时需要)。我想将此表及其现有数据迁移到一个稍微新的结构中,作为代码重构的一部分,以便 2 个不同的项目可以重用代码来管理他们的文档记录。

问题是我想重命名 ROWGUIDCOL 列,以便两个项目的文档表具有相同的列定义。

我不能使用 sp_rename,因为它不适用于 ROWGUIDCOL 列。

我无法删除现有的 ROWGUIDCOL 列(然后添加替换),因为我收到错误消息“具有 FILESTREAM 列的表必须具有具有 ROWGUIDCOL 属性的非空唯一列。”

我无法添加新的 ROWGUIDCOL 列(然后删除多余的原始列),因为我收到错误“指定为 ROWGUIDCOL 的重复列”

这个问题有什么解决办法吗?我是否必须备份所有文档内容(FILESTREAM 列)并先将其删除,然后更改 ROWGUIDCOL,然后再将 FILESTREAM 内容放回?

【问题讨论】:

    标签: sql-server sqlfilestream


    【解决方案1】:

    考虑为迁移创建具有不同名称的新表。然后用INSERT...SELECT加载(根据需要映射列),删除原表,最后将新表重命名为原名。

    【讨论】:

    • 好的,谢谢...所以您确认我别无选择,只能将所有 FILESTREAM 数据从一个表复制到另一个表?
    • @SimonGreen,这是我能想到的最有效的重构方式。
    猜你喜欢
    • 1970-01-01
    • 2019-01-22
    • 2016-12-29
    • 1970-01-01
    • 2021-11-15
    • 2012-05-26
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多