2009-06-11 1 views
1

私のSQL Expressデータベースの空き容量が不足しているため、重いデータを古い「イメージ」BLOB列からSQL Server 2008の新しい(varbinary)「ファイルストリーム」列に移行しています。「Image」列から「FileStream」列にデータを移行するために使用できるSQLクエリはありますか?

それを行うためのアプリケーションを書くことができますが、私は思っていないSQLでそれを行う巧妙な方法があるかもしれないと思いました。

SQLで簡単にこれを達成する方法を知っている人はいますか?

は、私は、次の表があると仮定:

表:[データ]
カラム:ID INT
カラム:画像ファイルの画像
カラム:FileStreamFile VARBINARY(MAX)FILESTREAMデフォルト(0X)

明らかにImageFileが古い列でFileStreamFileに移行したい場合

答えて

0

あなたのイメージをvarbinary(max)にキャストしようとしましたか?

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によって処理されます最小限の労力であなたのところに行きましょう。たとえば:

INSERT INTO Archive.dbo.Records 
    VALUES (newid(), 3, 
     CAST ('Seismic Data' as varbinary(max))); 
GO 
関連する問題