当表具有FILESTREAM列时重命名ROWCOLGUID列

时间:2015-12-16 12:31:11

标签: sql-server sqlfilestream

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

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

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

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

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

这个问题有解决办法吗?我是否必须备份所有文档内容(FILESTREAM列)并首先删除它,然后执行ROWGUIDCOL更改,然后将FILESTREAM内容重新放入?

1 个答案:

答案 0 :(得分:0)

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