PathName (Transact-SQL)

platí pro:SQL Server

Vrací cestu k velkému binárnímu objektu FILESTREAM (BLOB). OpenSqlFilestream API používá tuto cestu k vrácení handle, který může aplikace použít k práci s BLOB daty pomocí Win32 API. PathName je pouze pro čtení.

Transact-SQL konvence syntaxe

Syntax

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Arguments

column_name
Je název sloupce varbinary(max) sloupce FILESTREAM. column_name musí být název sloupce. Nemůže to být výraz ani výsledek příkazu CAST nebo CONVERT.

Požadavek na PathName pro sloupec jakéhokoli jiného datového typu nebo pro varbinární (max) sloupec, který nemá atribut FILESTREAM storage, způsobí chybu při kompilaci dotazu.

@option
Celočíselný výraz, který definuje, jak má být serverová složka cesty formátována. @option může být jedna z následujících hodnot. Výchozí hodnota je 0.

Value Description
0 Vrací název serveru převedený do formátu BIOSu, například: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Vrací název serveru bez konverze, například: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Vrací kompletní cestu serveru, například: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Bitová hodnota, která určuje, jak by měl být název serveru vrácen ve skupině dostupnosti Always On.

Pokud databáze nepatří do skupiny Always On availability, hodnota tohoto argumentu je ignorována. Název počítače je vždy použit v cestě.

Pokud databáze patří do skupiny dostupnosti Always On, hodnota use_replica_computer_name má následující vliv na výstup funkce PathName :

Value Description
Není specifikováno. Funkce vrací virtuální síťové jméno (VNN) v cestě.
0 Funkce vrací virtuální síťové jméno (VNN) v cestě.
1 Funkce vrací název počítače v cestě.

Návratový typ

nvarchar(max)

Návratová hodnota

Vrácená hodnota je plně kvalifikovaná logická nebo NETBIOS cesta BLOB. PathName nevrací IP adresu. NULL se vrací, když FILESTREAM BLOB nebyl vytvořen.

Remarks

Sloupec ROWGUID musí být viditelný v každém dotazu, který volá PathName.

SOUBOROVÝ BLOB lze vytvořit pouze pomocí Transact-SQL.

Examples

A. Čtení cesty pro FILESTREAM BLOB

Následující příklad přiřazuje proměnnou .PathNamenvarchar(max)

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

B. Zobrazení cest pro FILESTREAM BLOBy v tabulce

Následující příklad vytváří a zobrazuje cesty pro tři FILESTREAM BLOBy.

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