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