2009-06-11 2 views
1

내 SQL Express 데이터베이스의 공간이 부족하여 오래된 "이미지"BLOB 열의 무거운 데이터를 SQL Server 2008의 새 (varbinary) "파일 스트림"열로 마이그레이션합니다."이미지"열의 데이터를 "FileStream"열로 마이그레이션하는 데 사용할 수있는 SQL 쿼리가 있습니까?

그것을하기 위해 응용 프로그램을 작성하지만, 생각하지 못한 SQL에서 영리한 방법이있을 수 있다고 생각했습니다.

누구나 SQL에서 간단한 방식으로이를 수행하는 방법을 알고 있습니까?

TABLE : [데이터]
COLUMN : ID INT
COLUMN : ImageFile IMAGE
COLUMN : FileStreamFile VARBINARY (MAX) FILESTREAM의 DEFAULT (0X)

는 I은 다음 표를 가정 분명히 ImageFile이 이전 열이되어 FileStreamFile로 마이 그 레이션하려고합니다.

답변

0

이미지를 varbinary (최대)로 캐스팅하려고 시도 했습니까? 그 일을해야처럼

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

this MSDN page을 바탕으로 보인다.

0

enable the FILESTREAM feature을 꼭 확인하십시오.

아래의 코드 (from MSDN) 당 filestreams을 지원하는 테이블을 생성 할 수 있습니다 : 일들이 그 이후 pretty transparent처럼

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

것 같습니다 - 즉, filestreams를 추가하는 SQL 서버에 의해 처리됩니다 최소한의 노력을 기울이십시오. 예 :

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