Сегодня возникла необходимость перенести сайт на другой сервер.И тут я обнаружил, что папка, где должны хранится объкты файлового потока (поле FileBody) пуста. Поначалу страшно испугался, но зайдя на сайт успокоиля ибо все работало.
А проблема вот в чем. Когда я разрабатывал базу данных, то написал примерно такой SQL:
(
[Id] [uniqueidentifier] ROWGUIDCOL NOT NULL UNIQUE,
[SerialNumber] INTEGER UNIQUE,
[FileName] VARCHAR(512) NULL,
[FileBody] VARBINARY(MAX) FILESTREAM NULL
)
А когда устанавливал базу на сервер, то воспользовался 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. Так что может это и к лучшему :)
Комментариев нет:
Отправить комментарий