我有几个表,我想要使用文件stream存储。
这些表已经包含二进制数据,并有rowguid。 但是,在创build时,这些表格未添加到启用文件stream的文件组中。
在这一点上让这些表使用文件stream的最好方法是什么? 我是否需要删除+重新创build表并迁移数据? 有更容易的方法吗?
数据库已经启用了文件stream,还有其他表正在使用它们。
您不需要将整个表添加到文件stream文件组,而实际上您不能,因为只有文件stream列存储在文件stream存储中; 同一个表中的其他列将转到正常存储。
首先,您需要select要使用哪个文件stream文件组来存储表的文件stream数据:
ALTER TABLE YourTable SET (FILESTREAM_ON = FSGroup)
然后,您可以简单地将文件stream列添加到表中:
ALTER TABLE YourTable ADD YourColumn varbinary(max) FILESTREAM
但是,如果没有以这种方式定义,则不能ALTER现有列开始使用文件stream; 但是您可以创build一个新列,复制数据,然后删除旧列并重命名新列:
ALTER TABLE YourTable ADD NewColumn varbinary(max) FILESTREAM UPDATE YourTable SET NewColumn = OldColumn ALTER TABLE YourTable DROP COLUMN OldColumn EXEC sp_rename 'NewColumn','OldColumn','COLUMN'