8 мая 2009 г.

FILESTREAM SQL Server Management Studio

Сегодня возникла необходимость перенести сайт на другой сервер.И тут я обнаружил, что папка, где должны хранится объкты файлового потока (поле FileBody) пуста. Поначалу страшно испугался, но зайдя на сайт успокоиля ибо все работало.

А проблема вот в чем. Когда я разрабатывал базу данных, то написал примерно такой SQL:

CREATE TABLE dbo.SomeDatabase.File
(
        [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
        [SerialNumber] INTEGER UNIQUE,
        [FileName] VARCHAR(512) NULL,
        [FileBody] VARBINARY(MAX) FILESTREAM NULL
)

GOSyhi-подсветка кода

А когда устанавливал базу на сервер, то воспользовался SQL Server Management Studio. Сгенерировал SQL-скрипт и выполнил его на сервере. А Management Studio сгенерировала такой код:

CREATE TABLE dbo.SomeDatabase.File
(
        [Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
        [SerialNumber] INTEGER UNIQUE,
        [FileName] VARCHAR(512) NULL,
        [FileBody] VARBINARY(MAX) NULL
)
GOSyhi-подсветка кода

Отличие в ключевом слове FILESTREAM. Видимо, не научили еще Management Studio его поддерживать. Использовал я Management Studio 2008 Express Edition (Версия 10.0.1600.22).

Тем не менее все прекрасно работало, только файлы сохранялись не на диске, а прямо в базе. В следующий раз буду внимательнее или буду восстанавливать базу из бэкапа.

P.S.: Перенес сайт на хостинг 1Gb.ru. А он не поддерживает технологию FILESTREAM. Так что может это и к лучшему :)

Комментариев нет:

Отправить комментарий