GetFileNamespacePath (Transact-SQL)
Berlaku untuk: SQL Server
Mengembalikan jalur UNC untuk file atau direktori dalam FileTable.
Sintaks
<column-name>.GetFileNamespacePath(is_full_path, @option)
Argumen
column-name
Nama kolom kolom file_stream VARBINARY(MAX) dalam FileTable.
Nilai nama kolom harus berupa nama kolom yang valid. Ini tidak boleh berupa ekspresi, atau nilai yang dikonversi atau ditransmisikan dari kolom jenis data lain.
is_full_path
Ekspresi bilangan bulat yang menentukan apakah akan mengembalikan jalur relatif atau absolut. is_full_path bisa memiliki salah satu nilai berikut:
Nilai | Deskripsi |
---|---|
0 | Mengembalikan jalur relatif dalam direktori tingkat database. Ini adalah nilai default |
1 | Mengembalikan jalur UNC lengkap, dimulai dengan \\computer_name . |
@option
Ekspresi bilangan bulat yang menentukan bagaimana komponen server jalur harus diformat. @option bisa memiliki salah satu nilai berikut:
Nilai | Deskripsi |
---|---|
0 | Mengembalikan nama server yang dikonversi ke format NetBIOS, misalnya:\\SERVERNAME\MSSQLSERVER\MyDocumentDatabase Ini adalah nilai default. |
1 | Mengembalikan nama server tanpa konversi, misalnya:\\ServerName\MSSQLSERVER\MyDocumentDatabase |
2 | Mengembalikan jalur server lengkap, misalnya:\\ServerName.MyDomain.com\MSSQLSERVER\MyDocumentDatabase |
Jenis Hasil
nvarchar(maks)
Jika instans SQL Server diklusterkan dalam kluster failover, maka nama komputer yang dikembalikan sebagai bagian dari jalur ini adalah nama host virtual untuk instans berkluster.
Saat database termasuk dalam grup ketersediaan AlwaysOn, maka fungsi FileTableRootPath mengembalikan nama jaringan virtual (VNN) alih-alih nama komputer.
Keterangan Umum
Jalur yang dikembalikan fungsi GetFileNamespacePath adalah direktori logis atau jalur file dalam format berikut:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\...
Jalur logis ini tidak secara langsung sesuai dengan jalur NTFS fisik. Ini diterjemahkan ke jalur fisik oleh driver filter sistem file FILESTREAM dan agen FILESTREAM. Pemisahan antara jalur logis dan jalur fisik ini memungkinkan SQL Server mengatur ulang data secara internal tanpa memengaruhi validitas jalur.
Praktik Terbaik
Untuk menjaga kode dan aplikasi tetap independen dari komputer dan database saat ini, hindari menulis kode yang bergantung pada jalur file absolut. Sebagai gantinya, dapatkan jalur lengkap untuk file pada waktu proses dengan menggunakan fungsi FileTableRootPath dan GetFileNamespacePath bersama-sama, seperti yang ditunjukkan dalam contoh berikut. Secara default, fungsi GetFileNamespacePath mengembalikan jalur relatif file di bawah jalur akar untuk database.
USE MyDocumentDatabase;
@root varchar(100)
SELECT @root = FileTableRootPath();
@fullPath = varchar(1000);
SELECT @fullPath = @root + file_stream.GetFileNamespacePath() FROM DocumentStore
WHERE Name = N'document.docx';
Keterangan
Contoh
Contoh berikut menunjukkan cara memanggil fungsi GetFileNamespacePath untuk mendapatkan jalur UNC untuk file atau direktori di FileTable.
-- returns the relative path of the form "\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath() AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';
-- returns "\\MyServer\MSSQLSERVER\MyDocumentDatabase\MyFileTable\MyDocDirectory\document.docx"
SELECT file_stream.GetFileNamespacePath(1, Null) AS FilePath FROM DocumentStore
WHERE Name = N'document.docx';