Включение и настройка filestream на уже существующей БД при помощи визуального интерфейса MS SQL Server Management Studio


01.07.2012 || Раздел: || MS SQL Server


В данной статье я расскажу как включить работу с файловым типом данных - filestream - в случае, если база данных уже создана ранее. Большинство примеров в сети Интернет рассказывает только как настроить filestream при создании новой базы и приводят SQL-скрипты для этого. Есть и примеры с обновлением базы данных, но опять же с приведением SQL-скриптов. На самом деле это можно сделать и через визуальный интерфейс MS SQL Server Management Studio. Об это и пойдет речь в данной статье.

Итак, Ваша база данных уже создана и, например, работает некоторое время. Вы решили использовать filestream  для каких-то новых данных в вашей базе. (О том как включить filestream на уже созданной таблице с blob (бинарными) данными читайте в следующей статье.)

Т.е. в данном примере стоит задача создать новую таблицу для хранения filestream  данных на уже существующей базе данных.

Прежде, чем приступить к дальнейшей инструкции, убедитесь, что возможность работы с filestream включена на уровне всего экземпляра SQL сервера. Это делается довольно легко, о чем Вы можете прочитать здесь - http://msdn.microsoft.com/ru-ru/library/cc645923

Итак, инструкция:

Шаг 1. Создание файловой группы. Все созданные в дальнейшем папки для хранения записей типа filestream будут объединяться в эти группы. Вы можете создать одну группу или несколько в зависимости от потребностей.

Первоначально нам необходимо открыть свойства базы данных, для этого в окне Object Explorer выберите свою базу и в контекстном меню перейдите по пункту "Properties":

MS SQL Server Management Studio

В открывшемся диалоговом окне свойств выбранной БД в блоке "Select a page" выберите пункт "Filegroups".

В правой части окна под блоком Filestream нажмите кнопку "Add". Появится новая строка, в которой в колонке "Name" введите любое произвольное название группы на англ.языке без пробелов.

MS SQL Server Management Studio database properties filefroups for filestream

Шаг 2. Создание папки для хранения данных типа filestream.

Не закрывая предыдущее окно, в блоке "Select a page" выберите пункт "Files". Нажмите кнопку "Add" и в появившейся строке заполните следующие колонки:

  • Колонка "File Type" - выберите тип "Filestream Data"
  • Колонка "Filegroup" - укажите ранее созданную файловую группу
  • Колонка "Logical Name" - введите любое произвольное название на англ.языке без пробелов (в дальнейшем  сервер создаст папку с таким именем)
  • Колонка "Path" - укажите путь, где будут храниться все файлы типа filestream. Путь должен быть указан без последней папки, т.к. ее сервер создаст сам по имени предыдущей колонки.

Теперь можно нажать кнопку ОК, чтобы сохранить результат:

MS SQL Server Management Studio database properties files folder for filestream

Чтобы увидеть, что сделал SQL сервер в результате наших действий, перейдите по пути, который Вы указали как путь для хранения filestream-данных.

Вы увидите, что была создана папка, по имени "Logical Name", в которой расположены некоторые служебные файлы и папки:

Изменять или удалять данную служебную информацию не рекомендуется.

Шаг 3. Создание новой таблицы для хранения данных типа filestream. Вот здесь к сожалению без SQL-скрипта не обойтись, т.к. создать подобный filestream-столбец через конструктор таблиц невозможно. Поэтому я рекомендую сначала создать таблицу с обязательными для filestream колонками с помощью скрипта, а затем уже через конструктор дополнить ее нужными Вам полями.

Итак, открываем окно для ввода скриптов (для этого выберите свою БД и нажмите кнопку "New Query").

В открывшемся окне введите следующий скрипт:

CREATE TABLE tblFiles (
fileGUID uniqueidentifier default newid() unique rowguidcol not null,
fileDATA varbinary(max) filestream
)

Будет создана таблица с двумя обязательными полями: поле fileGUID - обязательный идентификатор, который сервер будет использовать для обозначения фалов, и поле  fileDATA, непосредственно ссылающее на нужный файл в файловой системе.

После выполнения данного скрипта в созданной ранее папке Вы увидите новую папку с именем, похожим на некий идентификатор. Эта папка будет соответствовать Вашей таблице и в ней будут храниться сохраненные файлы.

Теперь Вы можете перейти в конструктор таблицы и дополнить ее нужными полями.

Обратите внимание, что из конструктора не видно, является ли поле fileDATA полем типа filestream.

Если Вы хотите проверить, является ли колонка полем типа filestream, можно выполнить такой скрипт:

SELECT *
FROM sys.columns
WHERE (object_id = OBJECT_ID('tblFiles', 'table')) 
AND (system_type_id = type_id('varbinary')) 
AND (max_length = - 1) AND (is_filestream = 1)

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

Теперь можно работать с данной таблицей. Информации об этом довольно много в сети. Например, официальный ресурс от Microsoft: http://msdn.microsoft.com/ru-ru/library/gg471497

© Элла С. (Автор: Ella Sea)

< Предыдущая статья

Использование ID в URL-адресах вместо UserKey

Следующая статья >

Пошаговая инструкция по переносу содержимого KooBoo с XML на SQL Server 2008 R2