Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Devolve o caminho UNC para um ficheiro ou diretório numa FileTable.
Syntax
<column-name>.GetFileNamespacePath(is_full_path, @option)
Arguments
nome da coluna
O nome da coluna VARBINARY( MAX) file_stream coluna numa FileTable.
O valor do nome da coluna deve ser um nome de coluna válido. Não pode ser uma expressão, nem um valor convertido ou cast a partir de uma coluna de outro tipo de dado.
is_full_path
Uma expressão inteira que especifica se deve devolver um caminho relativo ou um caminho absoluto.
is_full_path pode ter um dos seguintes valores:
| Value | Description |
|---|---|
| 0 | Devolve o caminho relativo dentro do diretório ao nível da base de dados. Este é o valor padrão |
| 1 | Devolve o caminho completo do UNC, começando com o \\computer_name. |
@option
Uma expressão inteira que define como o componente servidor do caminho deve ser formatado.
@option pode ter um dos seguintes valores:
| Value | Description |
|---|---|
| 0 | Devolve o nome do servidor convertido para o formato NetBIOS, por exemplo:\\SERVERNAME\MSSQLSERVER\MyDocumentDatabaseEste é o valor padrão. |
| 1 | Devolve o nome do servidor sem conversão, por exemplo:\\ServerName\MSSQLSERVER\MyDocumentDatabase |
| 2 | Devolve o caminho completo do servidor, por exemplo:\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase |
Tipo de Retorno
nvarchar(max)
Se a instância do SQL Server estiver agrupada num cluster de failover, então o nome da máquina devolvido como parte deste caminho é o nome virtual do host da instância agrupada.
Quando a base de dados pertence a um grupo de disponibilidade Always On, a função FileTableRootPath devolve o nome da rede virtual (VNN) em vez do nome do computador.
Observações gerais
O caminho que a função GetFileNamespacePath devolve é um diretório lógico ou caminho de ficheiro no seguinte formato:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...
Este caminho lógico não corresponde diretamente a um caminho físico NTFS. É traduzido para o caminho físico pelo controlador de filtro do sistema de ficheiros do FILESTREAM e pelo agente FILESTREAM. Esta separação entre o caminho lógico e o caminho físico permite ao SQL Server reorganizar os dados internamente sem afetar a validade do caminho.
Melhores práticas
Para manter o código e as aplicações independentes do computador e da base de dados atuais, evite escrever código que dependa de caminhos absolutos de ficheiros. Em vez disso, obtenha o caminho completo de um ficheiro em tempo de execução usando as funções FileTableRootPath e GetFileNamespacePath em conjunto, como mostrado no exemplo seguinte. Por defeito, a função GetFileNamespacePath devolve o caminho relativo do ficheiro sob o caminho raiz da base de dados.
USE MyDocumentDatabase;
@root varchar(100)
SELECT @root = FileTableRootPath();
@fullPath = varchar(1000);
SELECT @fullPath = @root + file_stream.GetFileNamespacePath() FROM DocumentStore
WHERE Name = N'document.docx';
Observações
Examples
Os exemplos seguintes mostram como chamar a função GetFileNamespacePath para obter o caminho UNC para um ficheiro ou diretório numa FileTable.
-- returns the relative path of the form "\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath() AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';
-- returns "\\MyServer\MSSQLSERVER\MyDocumentDatabase\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath(1, Null) AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';