PathName (Transact-SQL)

Şunlar için geçerlidir: SQL Server

FILESTREAM ikili büyük nesnenin (BLOB) yolunu döndürür. OpenSqlFilestream API, bu yolu kullanarak bir uygulamanın Win32 API'leri kullanarak BLOB verileriyle çalışabileceği bir tutamacı döndürür. PathName yalnızca okunabilir.

Transact-SQL söz dizimi kuralları

Syntax

  
column_name.PathName ( @option [ , use_replica_computer_name ] )  

Arguments

column_name
Bir varbinary(max) FILESTREAM sütununun sütun adıdır. column_name bir sütun adı olmalı. Bu bir ifade ne de bir CAST veya CONVERT ifadesinin sonucu olamaz.

Başka herhangi bir veri tipinden bir sütun veya FILESTREAM depolama özniteliği olmayan varbinary(max) bir sütun için PathName talep etmek, sorgu derleme zamanı hatasına yol açar.

@option
Yolun sunucu bileşeninin nasıl biçimlendirileceğini tanımlayan bir tamsayı ifadesi . @option aşağıdaki değerlerden biri olabilir. Varsayılan değer 0’dır.

Değer Description
0 Sunucu adını BIOS formatına dönüştürülmüş olarak döndürür, örneğin: \\SERVERNAME\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9
1 Sunucu adını dönüştürmeden döndürür, örneğin: \\ServerName\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F1
2 Tam sunucu yolunu döndürür, örneğin: \\ServerName.MyDomain.com\MSSQLSERVER\v1\Archive\dbo\Records\Chart\A73F19F7-38EA-4AB0-BB89-E6C545DBD3F9

use_replica_computer_name
Her Zaman Açık bir kullanılabilirlik grubunda sunucu adının nasıl döndürüleceğini tanımlayan bir bit değeri.

Veritabanı Always Açık erişilebilirlik grubuna ait değilse, bu argümanın değeri göz ardı edilir. Yolda her zaman bilgisayar adı kullanılır.

Veritabanı Always On erişilebilirlik grubuna ait olduğunda, use_replica_computer_name değeri PathName fonksiyonunun çıktısı üzerinde aşağıdaki etkiye sahiptir:

Değer Description
Belirtilmemiş. Fonksiyon, yoldaki sanal ağ adını (VNN) döndürür.
0 Fonksiyon, yoldaki sanal ağ adını (VNN) döndürür.
1 Fonksiyon, yolda bilgisayar adını döndürür.

Dönüş Türü

nvarchar(max)

Dönüş Değeri

Geri dönen değer, BLOB'un tam nitelikli mantıksal veya NETBIOS yoludur. PathName bir IP adresi döndürmez. FILESTREAM BLOB oluşturulmadığında NULL döner.

Remarks

ROWGUID sütunu, PathName çağrısı yapan herhangi bir sorguda görünür olmalıdır.

Dosya akışı blobu yalnızca Transact-SQL kullanılarak oluşturulabilir.

Examples

A. DOSYA AKIŞI BLOB'un yolunu okumak

Aşağıdaki örnek bir değişkene ataymaktadır PathNamenvarchar(max) .

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

B. FILESTREAM BLOB'larının yollarını bir tabloda göstermek

Aşağıdaki örnek, üç DOSYA AKIŞI BLOB'u için yolları oluşturur ve gösterir.

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