Использование FILESTREAM и FileTable с группами доступности Always On

Область применения: SQL Server — только Для Windows

В этой статье содержатся сведения об использовании функций FILESTREAM и FileTable с группами доступности AlwaysOn в SQL Server.

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

Функции FileTable поддерживаются частично. После отработки отказа данные FileTable доступны на первичной реплике, но данные FileTable недоступны для доступных для чтения вторичных реплик.

Необходимые компоненты

Использование имен виртуальная сеть (виртуальных сетей) для доступа к FILESTREAM и FileTable

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

  • \\<computer_name>\<filestream_share_name>

Однако в группе доступности AlwaysOn имя компьютера виртуализируется с использованием имени виртуальной сети (VNN). Если компьютер является основной репликой в группе доступности, а базы данных в группе доступности содержат данные FILESTREAM, то будет также создан ресурс в области имен виртуальной сети, обеспечивающий доступ к данным FILESTREAM. Это не влияет на доступ Transact-SQL к данным FILESTREAM. Однако приложения, использующие API-интерфейсы файловой системы, должны использовать ресурс в области имен виртуальной сети, путь которого задается в следующем формате:

  • \\<VNN>\<filestream_share_name>

Ресурс в области имен виртуальной сети создается при наступлении одного из следующих событий.

  • Необходимо добавить базу данных, содержащую данные FILESTREAM, в группу доступности AlwaysOn в первичной реплике. В этом случае ресурс \\<computer_name>\<filestream_share_name> уже существует. Создается ресурс \\<VNN>\<filestream_share_name> .

  • Поддержка FILESTREAM включается для потокового доступа ввода-вывода для первичной реплики, имеющей группы доступности. Создаются следующие ресурсы.

    1. \\<computer_name>\<filestream_share_name>.
    2. \\<VNN1>\<filestream_share_name> для группы доступности 1.
    3. \\<VNN2>\<filestream_share_name> для группы доступности 2.

Ресурсы в области имен виртуальной сети также распространяются во все вторичные реплики.

Если база данных, содержащая данные FILESTREAM или FileTable, принадлежит группе доступности AlwaysOn:

  • Функции FILESTREAM и FileTable принимают или возвращают имена виртуальной сети, а не имена компьютеров. Дополнительные сведения об этих функциях см. в разделе FILESTREAM и FileTable Functions (Transact-SQL).

  • При осуществлении любого доступа к данным FILESTREAM или FileTable посредством API-интерфейса файловой системы будут использоваться имена виртуальной сети, а не имена компьютеров.

Если база данных входит в группу доступности, а ваше приложение пытается получить доступ к ресурсу по имени компьютера в формате \\<computer_name>\<filestream_share_name> , то выдается ошибка.

Если приложение пытается получить доступ к общей папке с помощью пути с областью VNN, если база данных не является частью группы доступности, запрос может завершиться успешно. В этом случае имя виртуальной сети будет разрешено в имя компьютера. Однако это использование настоятельно не рекомендуется, так как путь с областью VNN перестает работать, если группа доступности удалена.