2009-06-11 23 views
1

我的SQL Express数据库已经空间不够,所以我正在将我的大量数据从旧的“图像”blob列迁移到SQL Server 2008中的新(varbinary)“filestream”列。编写一个应用程序来做到这一点,但我认为可能有一个聪明的方法来做到这一点,我没有想到的SQL。有没有可用于将数据从“图像”列迁移到“FileStream”列的SQL查询?

有谁知道的方式在SQL一种简单的方式来实现这一目标?

假设我有以下表:

表:[数据]
柱:ID INT
柱:镜像文件IMAGE
柱:FileStreamFile VARBINARY(MAX)FILESTREAM DEFAULT(0X)

显然,与镜像文件是旧的专栏中,我希望迁移到FileStreamFile

回答

0

你试过在更新您铸造图像VARBINARY(最大值)?

UPDATE [Data] 
SET [FileStreamFile] = CAST([ImageFile] AS VARBINARY(MAX)) 

基于this MSDN page,看起来像应该工作。

0

确保您enable the FILESTREAM feature

你要创建一个支持文件流表,每个下面的代码(from MSDN):

CREATE TABLE Archive.dbo.Records 
(
    [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE, 
    [SerialNumber] INTEGER UNIQUE, 
    [Chart] VARBINARY(MAX) FILESTREAM NULL 
) 
GO 

看起来事情pretty transparent之后 - 即,增加文件流由SQL Server处理w /尽你最大的努力。对于如:

INSERT INTO Archive.dbo.Records 
    VALUES (newid(), 3, 
     CAST ('Seismic Data' as varbinary(max))); 
GO 
相关问题