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

Область применения: SQL Server

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

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 (9.x). Репликация таблиц с столбцами FILESTREAM в подписчики SQL Server 2000 (8.x) не поддерживается независимо от указанного параметра схемы.

Примечание.

Репликация больших значений данных из SQL Server в подписчики SQL Server 2005 (9.x) ограничена не более 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 (10.0.x) или более поздней версии и включить 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 при необходимости использовать некоторые функции автономных баз данных, например такие, как функция автономных пользователей. В этом случае следует иметь в виду, что некоторые параметры базы данных не хранятся в самой базе данных и не перемещаются автоматически при перемещении базы данных.

См. также

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