Compartilhar via


PathName (Transact-SQL)

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

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

column_name.PathName ( @option [ , use_replica_computer_name ] )

Argumentos

  • column_name
    É o nome 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.

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

  • @option
    Uma expressão de inteiro que define como o componente de servidor do caminho deve ser formatado. @option pode ser um dos valores a seguir. 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 em bit que define como o nome do servidor deve ser retornado em um grupo de disponibilidade AlwaysOn.

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

    Quando o banco de dados pertence a um grupo de disponibilidade AlwaysOn, 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 FILESTREAM BLOB só pode ser criado usando Transact-SQL.

Exemplos

A.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);
INSERT INTO TABLE1 VALUES(2, NEWID(), 0x00);
INSERT INTO TABLE1 VALUES(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

Consulte também

Referência

GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)

Acessar dados do FILESTREAM com OpenSqlFilestream

Conceitos

Dados de objeto binário grande (Blob) (SQL Server)