从文件stream迁移到“经典”blob

我正在考虑将所有客户的数据库移到SQL Azure。 我正在使用单个FILESTREAM字段来存储文件blob(不是为了在大blob性能),但只是因为我使用Express版,所以我使用文件stream作为一种方法不击中快速数据库大小限制)。

我有这个表,DOCUMENT字段包含文件stream数据,文件stream实现需要GUID字段:

CREATE TABLE [dbo].[DOC_FILES]( [ID_DOC_FILE] [int] NOT NULL, [DOCUMENT] [varbinary](max) FILESTREAM NULL, [GUID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [PK_DOC_FILES] PRIMARY KEY CLUSTERED ( [ID_DOC_FILE] ASC ) ON [PRIMARY] FILESTREAM_ON [MyFileStreamFileGroup], UNIQUE NONCLUSTERED ( [GUID] ASC ) ON [PRIMARY] ) ON [PRIMARY] FILESTREAM_ON [MyFileStreamFileGroup] 

如何以最好的方式删除文件stream?

我想到的一个技巧就是:

1)将DOCUMENT字段重命名为DOCUMENT_TEMP

2)创build一个新的DOCUMENT(而不是FILESTREAM)varbinary(max)字段

3)将DOCUMENT_TEMP复制并逐一删除到DOCUMENT

4)改变表格删除文件stream[这不是我清楚]

你能build议吗?

在Azure中创build表格时,只需将其创build为varbinary(max),然后使用SSIS或导入/导出向导来移动数据。

如果您想将现有数据库转换为使用本地varbinary,则需要遵循上面的基本概念。

  1. 添加新列Document_temp
  2. 更新表格将数据从Document复制到Document_temp
  3. 放下文档栏
  4. 将document_temp列重命名为文档。
  5. 如果你不需要的话去掉Guid(离开它没有任何伤害)。

正如解释[这里] [1]完全删除文件stream删除所有文件streamcolmns后的过程是:

1)从FILESTREAM文件组中分离表

2)删除FILESTREAM文件组文件

3)删除FIELSTREAM文件组

(详见文章)

[1]: http : //beyondrelational.com/blogs/jacob/archive/2010/03/11/completely-removing-filestream- features-from-a-sql-server-2008-database.aspx