PathName (Transact-SQL)

Gilt für: SQL Server

Gibt den Pfad eines FILESTREAM BLOB (Binary Large Object) zurück. Die OpenSqlFilestream-API verwendet diesen Pfad, um ein Handle zurückzugeben, das eine Anwendung verwenden kann, um mit den BLOB-Daten mithilfe von Win32-APIs zu arbeiten. PathName ist schreibgeschützt.

Transact-SQL-Syntaxkonventionen

Syntax

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Argumente

column_name
Der Spaltenname einer varbinary(max) FILESTREAM-Spalte. column_name muss ein Spaltenname sein. Es kann sich hierbei weder um einen Ausdruck noch um das Ergebnis einer CAST- oder CONVERT-Anweisung handeln.

Das Anfordern des PathName für eine Spalte eines anderen Datentyps oder für eine varbinary(max) -Spalte hat nicht das FILESTREAM-Speicherattribut einen Fehler bei der Abfragekompilierungszeit.

@option
Ein ganzzahliger Ausdruck , der definiert, wie die Serverkomponente des Pfads formatiert werden soll. Für@option sind die folgenden Werte möglich. Der Standardwert ist 0.

Wert Beschreibung
0 Gibt den Servernamen in ein BIOS-Format konvertiert zurück, z. B.: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Gibt den Servernamen ohne Konvertierung zurück, z. B.: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Gibt den vollständigen Serverpfad zurück, z. B.: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Ein Bitwert, der definiert, wie der Servername in einer AlwaysOn-Verfügbarkeitsgruppe zurückgegeben werden soll.

Wenn die Datenbank nicht zu einer AlwaysOn-Verfügbarkeitsgruppe gehört, wird der Wert dieses Arguments ignoriert. Der Computername wird immer im Pfad verwendet.

Wenn die Datenbank zu einer Always On-Verfügbarkeitsgruppe gehört, hat der Wert von use_replica_computer_name die folgende Auswirkung auf die Ausgabe der PathName-Funktion :

Wert Beschreibung
Nicht angegeben. Die Funktion gibt den virtuellen Netzwerknamen in (VNN) im Pfad zurück.
0 Die Funktion gibt den virtuellen Netzwerknamen in (VNN) im Pfad zurück.
1 Die Funktion gibt den Computernamen im Pfad zurück.

Rückgabetyp

nvarchar(max)

Rückgabewert

Der zurückgegebene Wert ist der vollqualifizierte logische oder NETBIOS-Pfad des BLOB. Pfadname gibt keine IP-Adresse zurück. NULL wird zurückgegeben, wenn das FILESTREAM BLOB nicht erstellt wurde.

Hinweise

Die Spalte ROWGUID muss in jeder Abfrage sichtbar sein, die PathName aufruft.

Ein FILESTREAM-BLOB kann nur mit Transact-SQL erstellt werden.

Beispiele

A. Lesen des Pfads für einen FILESTREAM-BLOB

Im folgenden Beispiel wird PathName der Variablen nvarchar(max) zugewiesen.

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

B. Anzeigen der Pfade für FILESTREAM-BLOBs in einer Tabelle

Im folgenden Beispiel werden die Pfade für drei FILESTREAM BLOBs erstellt und angezeigt.

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

Weitere Informationen

Binary Large Object (BLOB)-Daten (SQL Server)
GET_FILESTREAM_TRANSACTION_CONTEXT (Transact-SQL)
ZUgreifen auf FILESTREAM-Daten mit OpenSqlFilestream