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');