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.
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