Поделиться через


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

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

  • Службы SQL Server Integration Services (службы SSIS)

  • Распределенные запросы и связанные серверы

  • Шифрование

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

  • Репликация

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

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

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

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

  • SQL Server Express

  • Автономные базы данных

Службы SQL Server Integration Services (службы SSIS)

Службы SQL Server Integration Services (SSIS) обрабатывают данные FILESTREAM в потоке данных как любые другие данные большого двоичного объекта с использованием типа данных DT_IMAGE SSIS.

Загрузку файлов из файловой системы в столбец FILESTREAM можно выполнить с помощью преобразования «Импорт столбца». Преобразование «Экспорт столбца» также можно использовать, чтобы извлечь файлы из столбца FILESTREAM в другую папку файловой системы.

Распределенные запросы и связанные серверы

Вы можете работать с данными FILESTREAM при помощи распределенных запросов и связанных серверов, рассматривая их как данные varbinary(max). Не допускается использование функции FILESTREAM PathName() в распределенных запросах, в которых используется четырехкомпонентное имя, даже если имя относится к локальному серверу. Однако вы можете использовать функцию PathName() во внутреннем запросе передаваемого запроса, в котором используется OPENQUERY().

Шифрование

Данные FILESTREAM не шифруются, даже если включено прозрачное шифрование данных.

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

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

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

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

Could not continue scan with NOLOCK due to data movement.

Репликация

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

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

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

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

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

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

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

  • Если указан параметр схемы для репликации атрибута 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. Дополнительные сведения см. в разделах Запрос с полнотекстовым поиском, Настройка и управление фильтрами для поиска и sys.fulltext_document_types (Transact-SQL).

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

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

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

SQL Server Express

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

Автономные базы данных

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

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

См. также

Основные понятия

Данные большого двоичного объекта (SQL Server)