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


FileTableRootPath (Transact-SQL)

Возвращает корневой путь UNC для конкретной таблицы FileTable или для текущей базы данных.

Синтаксис

FileTableRootPath ( [ ‘[schema_name.]FileTable_name’ ], @option )

Аргументы

  • FileTable_name
    Имя таблицы FileTable. Аргумент FileTable_name имеет тип nvarchar. Этот параметр является необязательным. Значением по умолчанию является текущая база данных. Указывать параметр schema_name также не обязательно. Можно передать значение NULL для FileTable_name, чтобы использовать значение параметра по умолчанию.

  • @option
    Целочисленное выражение, определяющее способ форматирования серверных компонентов пути. Параметр @option может принимать одно из следующих значений:

    Значение

    Описание

    0

    Возвращает имя сервера, преобразованное в формат NetBIOS, например

    \\SERVERNAME\MSSQLSERVER\MyDocumentDB

    Это значение по умолчанию.

    1

    Возвращает имя сервера без преобразования, например:

    \\ServerName\MSSQLSERVER\MyDocumentDB

    2

    Возвращает полный путь сервера, например:

    \\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDB

Возвращаемый тип

nvarchar(4000)

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

Общие примечания

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

  • Значение FileTable_name недопустимо.

  • Вызывающая сторона не имеет достаточных разрешений для ссылки на указанную таблицу или текущую базу данных.

  • Параметр database_directory для FILESTREAM не задан для текущей базы данных.

Дополнительные сведения см. в разделе Работа с каталогами и путями в таблицах FileTable.

Рекомендации

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

USE MyDocumentDB;

@root varchar(100)
SELECT @root = FileTableRootPath();
@fullPath = varchar(1000);

SELECT @fullPath = @root + file_stream.GetFileNamespacePath()
FROM DocumentStore
WHERE Name = N’document.docx’;

Безопасность

Разрешения

Функции FileTableRootPath необходимо:

  • разрешение SELECT на FileTable, чтобы получить корневой путь конкретной таблицы FileTable;

  • разрешение db_datareader или более высокое, чтобы получить корневой путь для текущей базы данных.

Примеры

В следующих примерах показан вызов функции FileTableRootPath.

USE MyDocumentDB;
-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB”
SELECT FileTableRootPath();

-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB\MyFileTable”
SELECT FileTableRootPath(N'dbo.MyFileTable');

-- returns “\\MYSERVER\MSSQLSERVER\MyDocumentDB\MyFileTable”
SELECT FileTableRootPath(N'MyFileTable');

См. также

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

Работа с каталогами и путями в таблицах FileTable