我正在考虑将所有客户的数据库移到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]完全删除文件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