Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Так как данные FILESTREAM находится в файловой системе, в этом разделе приведены некоторые рекомендации, рекомендации и ограничения для использования FILESTREAM со следующими функциями в SQL Server:
SQL Server Integration Services (SSIS)
SQL Server Integration Services (SSIS) обрабатывает данные FILESTREAM в потоке данных, как и любые другие данные BLOB с помощью типа данных SSIS DT_IMAGE.
Можно использовать преобразование Import Column для импорта файлов из файловой системы в столбец типа 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 2000, что не поддерживается, независимо от указанного параметра схемы.
Замечание
Репликация больших значений данных из SQL Server 2014 в узлы-подписчики SQL Server 2005 (версия 9.x) ограничена максимальным размером данных в 256 МБ. Дополнительные сведения см. в разделе "Спецификации максимальной емкости".
Рекомендации по репликации транзакций
Если вы используете столбцы FILESTREAM в таблицах, опубликованных для репликации транзакций, обратите внимание на следующие аспекты:
Если какие-либо таблицы включают столбцы с атрибутом FILESTREAM, нельзя использовать значения моментального снимка базы данных или символ моментального снимка базы данных для @sync_method свойства sp_addpublication.
Максимальный размер текста указывает максимальный объем данных, которые можно вставить в столбец, опубликованный для репликации. Этот параметр можно использовать для управления размером реплицируемых данных FILESTREAM.
Если вы указываете параметр схемы для репликации атрибута FILESTREAM, но отфильтруете
uniqueidentifierстолбец, который требует FILESTREAM, или укажите, не реплицировать ограничение UNIQUE для столбца, репликация не реплицирует атрибут FILESTREAM. Данный столбец реплицируется только как столбецvarbinary(max).
Соображения по репликации слиянием
Если вы используете столбцы FILESTREAM в таблицах, опубликованных для объединительной репликации, обратите внимание на следующие соображения.
Для репликации слиянием и FILESTREAM требуется столбец данных типа
uniqueidentifierдля идентификации каждой строки в таблице. Репликация слиянием автоматически добавляет столбец, если в таблице его нет. Для репликации слиянием требуется, чтобы столбец имел свойство ROWGUIDCOL и значение по умолчанию NEWID() или NEWSEQUENTIALID(). Помимо этих требований, FILESTREAM требует, чтобы для столбца было определено ограничение UNIQUE. Эти требования имеют следующие последствия:При добавлении столбца FILESTREAM в таблицу, которая уже опубликована для репликации слиянием, убедитесь, что
uniqueidentifierстолбец имеет ограничение UNIQUE. Если у него нет ограничения UNIQUE, добавьте именованное ограничение в таблицу в базе данных публикации. По умолчанию репликация слиянием будет публиковать это изменение схемы, и она будет применена к каждой базе данных подписки.Если вы вручную добавляете ограничение UNIQUE, как это описано, и хотите удалить репликацию слиянием, необходимо сначала удалить ограничение UNIQUE; иначе удаление репликации завершится ошибкой.
По умолчанию репликация слиянием использует NEWSEQUENTIALID(), поскольку она обеспечивает более высокую производительность по сравнению с NEWID(). Если вы добавите колонку
uniqueidentifierв таблицу, предназначенную для публикации в рамках репликации слиянием, укажите NEWSEQUENTIALID() в качестве значения по умолчанию.
Репликация слиянием включает оптимизацию для репликации типов больших объектов. Эта оптимизация управляется параметром @stream_blob_columnssp_addmergearticle. Если задать параметр схемы для репликации атрибута FILESTREAM, @stream_blob_columns для параметра задано
trueзначение параметра. Эту оптимизацию можно переопределить с помощью sp_changemergearticle. Эта хранимая процедура позволяет установить @stream_blob_columns наfalse. При добавлении столбца FILESTREAM в таблицу, которая уже опубликована для репликации слиянием, рекомендуется задать параметрtrueс помощью sp_changemergearticle.Включение параметра схемы для FILESTREAM после создания статьи может привести к сбою репликации, если данные в столбце FILESTREAM превышают 2 ГБ, и во время репликации возникает конфликт. Если вы ожидаете, что эта ситуация может возникнуть, рекомендуется удалить и повторно создать таблицу, включив соответствующий параметр схемы FILESTREAM при создании.
Репликация слиянием может синхронизировать данные FILESTREAM по протоколу HTTPS с использованием веб-синхронизации. Эти данные не могут превышать 50 МБ для веб-синхронизации; в противном случае создается ошибка во время выполнения.
Пересылка журналов транзакций
Log shipping поддерживает FILESTREAM. Первичные и вторичные серверы должны работать под управлением SQL Server 2008 или более поздней версии и включить FILESTREAM.
Зеркалирование баз данных
Зеркальное отображение базы данных не поддерживает FILESTREAM. Файловая группа FILESTREAM не может быть создана на основном сервере. Зеркальное отображение базы данных невозможно настроить для базы данных, содержащей файловые группы FILESTREAM.
Полнотекстовое индексирование
Полнотекстовое индексирование работает с столбцом FILESTREAM так же, как и с столбцом varbinary(max) . Таблица FILESTREAM должна содержать столбец, содержащий расширение имени файла для каждого BLOB-объекта FILESTREAM. Дополнительные сведения см. в статье "Запрос" с помощью поиска Full-Text, настройки фильтров поиска и управления ими и 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, если вы хотите использовать определенные функции содержащихся баз данных, например содержащихся пользователей. Однако в этом случае необходимо знать, что некоторые параметры базы данных не содержатся в базе данных и не перемещаются автоматически при перемещении базы данных.