PathName (Transact-SQL)
Gibt den Pfad eines FILESTREAM BLOB (Binary Large Object) zurück. Die OpenSqlFilestream-API gibt über diesen logischen Pfad ein Handle zurück, mit dem Anwendungen die BLOB-Daten mithilfe von Win32-APIs bearbeiten können. PathName ist schreibgeschützt.
Syntax
column_name.PathName (@option)
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 von PathName für eine Spalte mit einem anderen Datentyp oder für eine varbinary(max)-Spalte, die nicht das FILESTREAM-Speicherattribut aufweist, führt bei der Abfrage zu einem Kompilierzeitfehler.
@option
Ein ganzzahliger Ausdruck, der definiert, wie die Serverkomponente des Pfads formatiert werden soll. @option kann einen der folgenden Werte haben. Der Standardwert ist 0.Wert
Beschreibung
0
Gibt den im BIOS-Format konvertierten Servernamen 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
Rückgabetyp
nvarchar(max)
Rückgabewert
Der zurückgegebene Wert ist der vollqualifizierte logische oder NETBIOS-Pfad des BLOB. PathName 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 ein 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);
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
Siehe auch