FileTableRootPath(Transact-SQL)
적용 대상: SQL Server
특정 FileTable 또는 현재 데이터베이스에 대한 루트 수준 UNC 경로를 반환합니다.
구문
FileTableRootPath ( [ '[schema_name.]FileTable_name' ], @option )
인수
FileTable_name
FileTable의 이름입니다. FileTable_name nvarchar 형식입니다. 이것은 선택적 매개 변수입니다. 기본값은 현재 데이터베이스입니다. schema_name 지정하는 것도 선택 사항입니다. 기본 매개 변수 값을 사용하려면 FileTable_name NULL을 전달할 수 있습니다.
@option
경로의 서버 구성 요소의 서식을 지정하는 방법을 정의하는 정수 식입니다. @option 다음 값 중 하나를 가질 수 있습니다.
값 | 설명 |
---|---|
0 | NetBIOS 형식으로 변환된 서버 이름을 반환합니다. 예를 들면 다음과 같습니다.\\SERVERNAME\MSSQLSERVER\MyDocumentDatabase 기본값입니다. |
1 | 변환 없이 서버 이름을 반환합니다. 예를 들면 다음과 같습니다.\\ServerName\MSSQLSERVER\MyDocumentDatabase |
2 | 예를 들어 전체 서버 경로를 반환합니다.\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase |
반환 형식
nvarchar(4000)
데이터베이스가 Always On 가용성 그룹에 속하는 경우 FileTableRootPath 함수는 컴퓨터 이름 대신 VNN(가상 네트워크 이름)을 반환합니다.
일반적인 주의 사항
FileTableRootPath 함수는 다음 조건 중 하나가 true이면 NULL을 반환합니다.
FileTable_name 값이 잘못되었습니다.
호출자에게 지정된 테이블 또는 현재 데이터베이스를 참조할 수 있는 충분한 권한이 없습니다.
database_directory FILESTREAM 옵션이 현재 데이터베이스에 대해 설정되지 않았습니다.
자세한 내용은 FileTable에서 디렉터리 및 경로 작업을 참조하십시오.
좋은 연습 방법
코드와 애플리케이션을 현재 컴퓨터 및 데이터베이스와 독립적으로 유지하려면 절대 파일 경로를 사용하는 코드를 작성하지 마세요. 대신 다음 예제와 같이 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 함수에는 다음이 필요합니다.
FileTable에 대한 SELECT 권한으로 특정 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');