2009-06-11 1 views
1

У моей базы данных SQL Express закончилась нехватка места, поэтому я переношу свои тяжелые данные со старых столбцов столбцов «изображение» в новый (varbinary) столбцы «filestream» в SQL Server 2008.Есть ли SQL-запрос, который я могу использовать для переноса данных из столбца «Изображение» в столбец «FileStream»?

Я был около напишите приложение, чтобы сделать это, но я подумал, что может быть умный способ сделать это в SQL, о котором я не думал.

Кто-нибудь знает, как достичь этого простым способом в SQL?

Предположим, у меня есть следующая таблица:

ТАБЛИЦА: [Данные]
КОЛОННА: ИД INT
КОЛОННА: ImageFile ИЗОБРАЖЕНИЯ
КОЛОННА: 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