Использование FILESTREAM с другими компонентами SQL Server

Поскольку данные FILESTREAM находятся в файловой системе, в данном разделе приводятся основные сведения, рекомендации и ограничения по использованию FILESTREAM со следующими функциями SQL Server:

  • Моментальные снимки базы данных

  • Репликация

  • Доставка журналов

  • Зеркальное отображение базы данных

  • Полнотекстовое индексирование

  • Отказоустойчивый кластер

  • SQL Server Express

Моментальные снимки базы данных

SQL Server не поддерживает моментальные снимки базы данных для файловых групп FILESTREAM. Если файловая группа FILESTREAM включена в предложение CREATE DATABASE ON, выполнение этой инструкции завершится сбоем и приведет к возникновению ошибки.

При использовании FILESTREAM моментальные снимки базы данных можно создавать для стандартных файловых групп (отличных от FILESTREAM). В таких моментальных снимках баз данных файловые группы FILESTREAM отмечаются как автономные.

В инструкции SELECT, выполняемой в отношении таблицы FILESTREAM в моментальном снимке базы данных, не должно содержаться столбцов FILESTREAM; в противном случае будет возвращено следующее сообщение об ошибке:

Не удалось продолжить просмотр с NOLOCK вследствие перемещения данных.

Репликация

Столбец varbinary(max), атрибут FILESTREAM которого включен на издателе, может быть реплицирован на подписчик с атрибутом FILESTREAM или без него. Чтобы указать способ репликации этого столбца, используйте диалоговое окно Свойства статьи — <Статья> или параметр @schema\_option хранимых процедур sp_addarticle или sp_addmergearticle. Дополнительные сведения о задании параметров схемы см. в разделах Как указать параметры схемы (среда SQL Server Management Studio) и Как задать параметры схемы (программирование репликации на языке Transact-SQL). Данные, реплицированные в столбец varbinary(max) без атрибута FILESTREAM, не должны превышать установленный в 2 ГБ предел для данного типа данных; в противном случае формируется ошибка выполнения. Рекомендуется выполнять репликацию атрибута FILESTREAM, если данные не реплицируются в SQL Server 2005. Репликация таблиц со столбцами FILESTREAM на подписчики SQL Server 2000 не поддерживается, независимо установленного параметра схемы. Дополнительные сведения о репликации данных в более ранние версии SQL Server см. в разделе Использование нескольких версий SQL Server в топологии репликации.

ПримечаниеПримечание

Репликация больших значений данных из подписчиков SQL Server 2008 в SQL Server 2005 ограничена максимальным значением 256 МБ значений данных. Дополнительные сведения см. в разделе Maximum Capacity Specifications.

Вопросы использования репликации транзакций

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

  • Если в какой-либо из таблиц содержатся столбцы с атрибутом FILESTREAM, значения database snapshot или database snapshot character нельзя использовать для свойства @sync\_method хранимой процедуры sp_addpublication.

  • Параметр max text repl size задает максимально допустимый объем данных, добавляемых в опубликованный для репликации столбец. Этот параметр позволяет управлять размером реплицируемых данных FILESTREAM. Дополнительные сведения см. в разделе Параметр max text repl size.

  • Если параметр схемы настроен на репликацию параметра FILESTREAM, но необходимый для FILESTREAM столбец uniqueidentifier был отфильтрован, или если для этого столбца была отменена репликация ограничения UNIQUE, то репликация атрибута FILESTREAM осуществлена не будет. Столбец будет реплицирован только как столбец типа varbinary(max).

Общие вопросы репликации слиянием

При использовании столбцов FILESTREAM в таблицах, опубликованных для репликации слиянием, обратите внимание на следующие положения.

  • Как для репликации слиянием, так и для атрибута FILESTREAM необходим столбец типа данных uniqueidentifier, позволяющий идентифицировать каждую строку таблицы. Если в таблице такого столбца нет, репликация слиянием автоматически добавляет его. Для репликации слиянием требуется, чтобы было установлено свойство ROWGUIDCOL данного столбца и чтобы значениями по умолчанию для данного столбца являлись NEWID() или NEWSEQUENTIALID(). В дополнение к этим требованиям для атрибута FILESTREAM необходимо задание ограничения UNIQUE для данного столбца. Эти требования приводят к следующим последствиям.

    • При добавлении столбца FILESTREAM к таблице, уже опубликованной для репликации слиянием, необходимо убедиться, что у столбца uniqueidentifier имеется ограничение UNIQUE. Если ограничение UNIQUE отсутствует, добавьте именованное ограничение к таблице в базе данных публикации. По умолчанию репликация слиянием опубликует данное изменение схемы, и оно будет применено к каждой базе данных подписки. Дополнительные сведения об изменениях схем см. в разделе Внесение изменений схем в базы данных публикаций.

      Если ограничение UNIQUE добавляется вручную, согласно описанию, и репликацию слиянием требуется удалить, то сначала необходимо удалить ограничение UNIQUE, иначе удаление репликации завершится неуспешно.

    • По умолчанию в репликации слиянием используется значение NEWSEQUENTIALID(), поскольку, по сравнению с NEWID(), оно обеспечивает лучшую производительность. При добавлении столбца uniqueidentifier к таблице, уже опубликованной для репликации слиянием, в качестве значения по умолчанию следует указать NEWSEQUENTIALID().

  • Репликация слиянием включает в себя оптимизацию репликации типов больших объектов. Оптимизация управляется при помощи параметра @stream\_blob\_columns хранимой процедуры sp_addmergearticle. Если параметр схемы настроен на репликацию атрибута FILESTREAM, параметру @stream\_blob\_columns присваивается значение true. Эта оптимизация может быть переопределена с помощью хранимой процедуры sp_changemergearticle. Эта хранимая процедура позволяет присвоить параметру @stream\_blob\_columns значение false. При добавлении столбца FILESTREAM в таблицу, уже опубликованную для репликации слиянием, значение true рекомендуется присвоить параметру при помощи хранимой процедуры sp_changemergearticle.

  • Включение параметра схемы для FILESTREAM после создания статьи может привести к сбою репликации, если размер данных столбца FILESTREAM превышает 2 ГБ и если во время репликации возникает конфликт. Если возникновение данной ситуации не исключено, рекомендуется удалить и повторно создать статью таблицы с соответствующим параметром схемы FILESTREAM, включенным во время создания.

  • Репликация слиянием позволяет синхронизировать данные FILESTREAM во время HTTPS-соединения при помощи веб-синхронизации. Размер этих данных не должен превышать ограничение в 50 МБ для веб-синхронизации, иначе возникнет ошибка выполнения.

Доставка журналов

В доставке журналов предусмотрена поддержка FILESTREAM. Как на сервере-источнике, так и на сервере-получателе должна быть запущена версия SQL Server 2008 или более поздняя версия и должен быть включен параметр FILESTREAM.

Зеркальное отображение базы данных

Зеркальное отображение базы данных не поддерживает FILESTREAM. Создание файловой группы FILESTREAM на основном сервере невозможно. Настройка зеркального отображения для базы данных, содержащей файловые группы FILESTREAM, невозможна.

Полнотекстовое индексирование

Полнотекстовое индексирование обрабатывает столбцы FILESTREAM так же, как и столбцы типа varbinary(max). В таблице FILESTREAM должен присутствовать столбец, в котором содержится расширение имени файла для каждого блока больших двоичных объектов (BLOB) FILESTREAM. Дополнительные сведения см. в разделах Запросы столбцов varbinary(max) и xml (полнотекстовый поиск), Фильтры полнотекстового поиска, Процесс полнотекстового индексирования и обработки запросов и sys.fulltext_document_types (Transact-SQL).

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

Отказоустойчивый кластер

В целях отказоустойчивой кластеризации файловые группы FILESTREAM могут быть помещены на общий диск. Параметр FILESTREAM должен быть включен на каждом узле кластера, на котором будет размещен экземпляр FILESTREAM. Дополнительные сведения см. в разделе Как установить FILESTREAM в отказоустойчивом кластере.

Выпуск SQL Server Express

В SQL Server Express предусмотрена поддержка FILESTREAM. Ограничение размера базы данных в 4 ГБ не включает контейнер данных FILESTREAM.