FileTableRootPath (Transact-SQL)

Применимо к:SQL Server

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

Синтаксис

  
FileTableRootPath ( [ '[schema_name.]FileTable_name' ], @option )  

Аргументы

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

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

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

\\SERVERNAME\MSSQLSERVER\MyDocumentDatabase

Это значение по умолчанию.
1 Возвращает имя сервера без преобразования, например:

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

\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase

Тип возвращаемых данных

nvarchar(4000)

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

Общие замечания

Функция FileTableRootPath возвращает значение NULL, если одно из следующих условий имеет значение true:

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

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

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

Дополнительные сведения см. в статье Work with Directories and Paths in FileTables.

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

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

USE MyDocumentDatabase;  
  
@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 MyDocumentDatabase;  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase"  
SELECT FileTableRootPath();  
  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase\MyFileTable"  
SELECT FileTableRootPath(N'dbo.MyFileTable');  
  
-- returns "\\MYSERVER\MSSQLSERVER\MyDocumentDatabase\MyFileTable"  
SELECT FileTableRootPath(N'MyFileTable');  

См. также

Work with Directories and Paths in FileTables