Compartilhar via


GetFileNamespacePath (Transact-SQL)

Retorna o caminho UNC de um arquivo ou diretório em uma FileTable.

Sintaxe

<column-name>.GetFileNamespacePath(is_full_path, @option)

Argumentos

  • column-name
    O nome da coluna VARBINARY(MAX) file_stream em uma FileTable.

    O valor de column-name deve ser um nome de coluna válido. Não pode ser uma expressão ou um valor convertido de uma coluna de outro tipo de dados.

  • is_full_path
    Uma expressão de inteiro que especifica se um caminho relativo ou absoluto deve ser retornado. is_full_path pode ter um dos seguintes valores:

    Valor

    Descrição

    0

    Retorna o caminho relativo dentro do diretório no nível do banco de dados.

    Esse é o valor padrão.

    1

    Retorna o caminho UNC completo, a partir do \\computer_name.

  • @option
    Uma expressão de inteiro que define como o componente do servidor do caminho deve ser formatado. @option pode ter um dos seguintes valores:

    Valor

    Descrição

    0

    Retorna o nome do servidor convertido no formato NetBIOS, por exemplo:

    \\SERVERNAME\MSSQLSERVER\MyDocumentDB

    Esse é o valor padrão.

    1

    Retorna o nome do servidor sem conversão, por exemplo:

    \\ServerName\MSSQLSERVER\MyDocumentDB

    2

    Retorna o caminho completo do servidor, por exemplo:

    \\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDB

Tipo de retorno

nvarchar(max)

Se a instância do SQL Server for clusterizada em um cluster de failover, o nome do computador retornado como parte desse caminho será o nome de host virtual da instância clusterizada.

Quando o banco de dados pertence a um grupo de disponibilidade AlwaysOn, a função FileTableRootPath retorna o VNN (nome de rede virtual) em vez do nome do computador.

Comentários gerais

O caminho que a função GetFileNamespacePath retorna é um caminho de arquivo ou diretório lógico no seguinte formato:

\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...

Esse caminho lógico não corresponde diretamente a um caminho NTFS físico. Ele é convertido no caminho físico pelo driver de filtro do sistema de arquivos do FILESTREAM e pelo agente de FILESTREAM. Esta separação entre os caminhos lógico e físico permite que o SQL Server reorganize dados internamente sem afetar a validade do caminho.

Práticas recomendadas

Para manter código e aplicativos independentes do computador e do banco de dados atuais, evite escrever código baseado em caminhos de arquivo absolutos. Em vez disso, obtenha o caminho completo de um arquivo em tempo de execução com o uso das funções FileTableRootPath e GetFileNamespacePath juntas, conforme é mostrado no exemplo a seguir. Por padrão, a função GetFileNamespacePath retorna o caminho relativo do arquivo sob o caminho raiz do banco de dados.

USE MyDocumentDB;
@root varchar(100)
SELECT @root = FileTableRootPath();

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

Exemplos

Os exemplos a seguir mostram como chamar a função GetFileNamespacePath para obter o caminho UNC de um arquivo ou diretório em uma 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\MyDocumentDB\MyFileTable\MyDocDirectory\document.docx”
SELECT file_stream.GetFileNamespacePath(1, Null) AS FilePath FROM DocumentStore
WHERE Name = N’document.docx’;

Consulte também

Conceitos

Trabalhar com diretórios e caminhos em FileTables