Compartilhar via


PathName (Transact-SQL)

Aplica-se a: SQL Server

Retorna o caminho de um objeto binário grande FILESTREAM (BLOB). A API OpenSqlFilestream usa esse caminho para retornar um identificador que um aplicativo pode usar para trabalhar com os dados BLOB usando APIs Win32. PathName é somente leitura.

Convenções de sintaxe de Transact-SQL

Sintaxe

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Argumentos

column_name
É o nome da coluna de uma coluna FILESTREAM varbinary(max). column_name deve ser um nome de coluna. Não pode ser uma expressão nem o resultado de uma instrução CAST ou CONVERT.

Solicitar o PathName para uma coluna de qualquer outro tipo de dados ou para uma coluna varbinary(max) que não tenha o atributo de armazenamento FILESTREAM causará um erro de tempo de compilação de consulta.

@option
Uma expressão inteira que define como o componente do servidor do caminho deve ser formatado. @option pode ser um dos seguintes valores. O padrão é 0.

Valor Descrição
0 Retorna o nome do servidor convertido no formato de BIOS, por exemplo: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Retorna o nome do servidor sem conversão, por exemplo: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Retorna o caminho completo do servidor, por exemplo: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Um valor de bit que define como o nome do servidor deve ser retornado em um grupo de disponibilidade Always On.

Quando o banco de dados não pertence a um grupo de disponibilidade Always On, o valor desse argumento é ignorado. O nome do computador sempre é usado no caminho.

Quando o banco de dados pertence a um grupo de disponibilidade Always On, o valor de use_replica_computer_name tem o seguinte efeito na saída da função PathName :

Valor Descrição
Não especificado. A função retorna o VNN (nome de rede virtual) no caminho.
0 A função retorna o VNN (nome de rede virtual) no caminho.
1 A função retorna o nome do computador no caminho.

Tipo de retorno

nvarchar(max)

Valor de retorno

O valor retornado é o caminho lógico qualificado global ou NETBIOS do BLOB. PathName não retorna um endereço IP. NULL é retornado quando o FILESTREAM BLOB não foi criado.

Comentários

A coluna ROWGUID deve estar visível em qualquer consulta que chama PathName.

Um blob de fluxo de arquivos só pode ser criado usando o Transact-SQL.

Exemplos

R. Lendo o caminho para um FILESTREAM BLOB

O exemplo a seguir atribui PathName a uma variável nvarchar(max).

DECLARE @PathName nvarchar(max);  
SET @PathName = (  
    SELECT TOP 1 photo.PathName()  
    FROM dbo.Customer  
    WHERE LastName = 'CustomerName'  
    );  

B. Exibindo os caminhos de FILESTREAM BLOBs em uma tabela

O exemplo a seguir cria e exibe os caminhos para três FILESTREAM BLOBs.

-- Create a FILESTREAM-enabled database.  
-- The c:\data directory must exist.  
CREATE DATABASE PathNameDB  
ON  
PRIMARY ( NAME = ArchX1,  
    FILENAME = 'c:\data\archdatP1.mdf'),  
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = ArchX3,  
    FILENAME = 'c:\data\filestreamP1')  
LOG ON  ( NAME = ArchlogX1,  
    FILENAME = 'c:\data\archlogP1.ldf');  
GO  
  
USE PathNameDB;  
GO  
  
-- Create a table, add some records, and  
-- create the associated FILESTREAM  
-- BLOB files.  
  
CREATE TABLE TABLE1  
    (  
        ID int,  
        RowGuidColumn UNIQUEIDENTIFIER  
                      NOT NULL UNIQUE ROWGUIDCOL,  
        FILESTREAMColumn varbinary(MAX) FILESTREAM  
    );  
GO  
  
INSERT INTO TABLE1 VALUES  
 (1, NEWID(), 0x00)  
,(2, NEWID(), 0x00)  
,(3, NEWID(), 0x00);  
GO  
  
SELECT FILESTREAMColumn.PathName() AS 'PathName' FROM TABLE1;  
  
--Results  
--PathName  
------------------------------------------------------------------------------------------------------------  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\DD67C792-916E-4A76-8C8A-4A85DC5DB908  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\2907122B-2560-4CB9-86DC-FBE7ABA1843B  
--\\SERVER\MSSQLSERVER\v1\PathNameExampleDB\dbo\TABLE1\FILESTREAMColumn\922BE0E0-CAB9-4403-90BF-945BD258E4BC  
--  
--(3 row(s) affected)  
GO  
  
--Drop the database to clean up.  
USE master;  
GO  
DROP DATABASE PathNameDB;  

Confira também

Dados de objeto binário grande (Blob) (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
Acessar dados do FILESTREAM com OpenSqlFilestream