3

我的 SQL Express 数据库空间不足,因此我将大量数据从旧的“图像”blob 列迁移到 SQL Server 2008 中的新(varbinary)“文件流”列。

我正要写一个应用程序来做这件事,但我想可能有一个我没有想到的聪明的方法在 SQL 中做这件事。

有谁知道在 SQL 中以简单的方式实现这一目标的方法?

假设我有下表:

表:[数据]
列:ID INT
列:ImageFile 图像
列:FileStreamFile VARBINARY(MAX) FILESTREAM DEFAULT(0x)

显然 ImageFile 是我想迁移到 FileStreamFile 的旧列

4

2 回答 2

2

您是否尝试在更新中将您的图像转换为 varbinary(max)?

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

基于这个 MSDN page,看起来应该可以。

于 2009-06-11T17:04:25.757 回答
0

确保启用 FILESTREAM 功能

您需要根据以下代码(来自 MSDN)创建一个支持文件流的表:

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

看起来事情在那之后是非常透明的——即,添加文件流由 SQL Server 处理,而您只需付出最小的努力。例如:

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO
于 2009-06-11T17:07:53.923 回答