Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Так как данные FILESTREAM находится в файловой системе, в этом разделе приведены некоторые рекомендации, рекомендации и ограничения для использования FILESTREAM со следующими функциями в SQL Server:
SQL Server Integration Services (SSIS);
SQL Server Integration Services (SSIS) обрабатывает данные FILESTREAM в потоке данных, как и любые другие BLOB-данные, используя тип данных 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, так и без него. Чтобы указать способ репликации столбца, используйте диалоговое окно Article Properties - <Article> или параметр @schema_optionsp_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 должна содержать столбец, содержащий расширение имени файла для каждого FILESTREAM BLOB-объекта. Дополнительные сведения см. в статье "Запрос" с помощью полнотекстового поиска, настройки фильтров поиска и управления ими и 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, не является полностью автономной.
Если вы хотите использовать некоторые возможности автономных баз данных, например автономных пользователей, можно установить для параметра containment базы данных значение PARTIAL. В этом случае следует иметь в виду, что некоторые параметры базы данных не хранятся в самой базе данных и не перемещаются автоматически при перемещении базы данных.
См. также
Данные больших двоичных объектов (BLOB-объекты) (SQL Server)