Bekerja dengan direktori dan jalur di FileTables
Berlaku untuk: SQL Server
Menjelaskan struktur direktori tempat file disimpan dalam FileTables.
Cara: Bekerja dengan Direktori dan Jalur di FileTables
Anda dapat menggunakan tiga fungsi berikut untuk bekerja dengan direktori FileTable di Transact-SQL:
Untuk mendapatkan hasil ini | Gunakan fungsi ini |
---|---|
Dapatkan jalur UNC tingkat akar untuk FileTable tertentu atau untuk database saat ini. | FileTableRootPath (Transact-SQL) |
Dapatkan jalur UNC absolut atau relatif untuk file atau direktori dalam FileTable. | GetFileNamespacePath (Transact-SQL) |
Dapatkan nilai ID pencari jalur untuk file atau direktori yang ditentukan dalam FileTable, dengan menyediakan jalur. | GetPathLocator (Transact-SQL) |
Menggunakan jalur relatif untuk kode portabel
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 (Transact-SQL) dan GetFileNamespacePath (Transact-SQL)) bersama-sama, seperti yang ditunjukkan dalam contoh berikut. Secara default, GetFileNamespacePath
fungsi mengembalikan jalur relatif file di bawah jalur akar untuk database.
USE database_name;
DECLARE @root NVARCHAR(100);
DECLARE @fullpath NVARCHAR(1000);
SELECT @root = FileTableRootPath();
SELECT @fullpath = @root + file_stream.GetFileNamespacePath()
FROM filetable_name
WHERE name = N'document_name';
PRINT @fullpath;
GO
Batasan
Tingkat sarang
Penting
Anda tidak dapat menyimpan lebih dari 15 tingkat subdirektori dalam direktori FileTable. Ketika Anda menyimpan 15 tingkat subdirektori, maka tingkat terendah tidak dapat berisi file, karena file-file ini akan mewakili tingkat tambahan.
Panjang nama jalur lengkap
Penting
Sistem file NTFS mendukung nama jalur yang jauh lebih panjang dari batas 260 karakter shell Windows dan sebagian besar API Windows. Oleh karena itu dimungkinkan untuk membuat file dalam hierarki file FileTable dengan menggunakan Transact-SQL yang tidak dapat Anda lihat atau buka dengan Windows Explorer atau banyak aplikasi Windows lainnya, karena nama jalur lengkap melebihi 260 karakter. Namun Anda dapat terus mengakses file-file ini dengan menggunakan Transact-SQL.
Jalur lengkap ke item yang disimpan dalam FileTable
Jalur lengkap ke file atau direktori yang disimpan dalam FileTable dimulai dengan elemen berikut:
Berbagi yang diaktifkan untuk akses I/O file FILESTREAM di tingkat instans SQL Server.
yang
DIRECTORY_NAME
ditentukan di tingkat database.Yang
FILETABLE_DIRECTORY
ditentukan pada tingkat FileTable.
Hierarki yang dihasilkan terlihat seperti ini:
\\<machine>\<instance-level FILESTREAM share>\<database-level directory>\<FileTable directory>\
Hierarki direktori ini membentuk akar namespace file FileTable. Di bawah hierarki direktori ini, data FILESTREAM untuk FileTable disimpan sebagai file, dan sebagai subdirektori yang juga dapat berisi file dan subdirektori.
Penting untuk diingat bahwa hierarki direktori yang dibuat di bawah berbagi FILESTREAM tingkat instans adalah hierarki direktori virtual. Hierarki ini disimpan dalam database SQL Server dan tidak diwakili secara fisik dalam sistem file NTFS. Semua operasi yang mengakses file dan direktori di bawah berbagi FILESTREAM dan di FileTable yang dikandungnya dicegat dan ditangani oleh komponen SQL Server yang disematkan dalam sistem file.
Semantik direktori akar pada tingkat instans, database, dan FileTable
Hierarki direktori ini mengamati semantik berikut:
Berbagi FILESTREAM tingkat instans dikonfigurasi oleh administrator dan disimpan sebagai properti server. Anda dapat mengganti nama berbagi ini dengan menggunakan Pengelola Konfigurasi SQL Server. Operasi penggantian nama tidak berlaku sampai server dimulai ulang.
Tingkat
DIRECTORY_NAME
database null secara default saat Anda membuat database baru. Administrator dapat mengatur atau mengubah nama ini dengan menggunakanALTER DATABASE
pernyataan . Nama harus unik (dalam perbandingan yang tidak peka huruf besar/kecil) dalam instans tersebut.Anda biasanya memberikan
FILETABLE_DIRECTORY
nama sebagai bagianCREATE TABLE
dari pernyataan saat membuat FileTable. Anda dapat mengubah nama ini dengan menggunakanALTER TABLE
perintah .Anda tidak dapat mengganti nama direktori akar ini melalui operasi I/O file.
Anda tidak dapat membuka direktori akar ini dengan handel file eksklusif.
Kolom is_directory dalam skema FileTable
Tabel berikut ini menjelaskan interaksi antara is_directory
kolom dan file_stream
kolom yang berisi data FILESTREAM dalam FileTable.
nilai is_directory | nilai file_stream | Perilaku |
---|---|---|
FALSE |
NULL |
Ini adalah kombinasi yang tidak valid yang ditangkap oleh batasan yang ditentukan sistem. |
FALSE |
<value> |
Item mewakili file. |
TRUE |
NULL |
Item mewakili direktori. |
TRUE |
<value> |
Ini adalah kombinasi yang tidak valid yang ditangkap oleh batasan yang ditentukan sistem. |
Menggunakan Nama Jaringan Virtual (VPN) dengan grup ketersediaan AlwaysOn
Saat database yang berisi data FILESTREAM atau FileTable milik grup ketersediaan:
Fungsi FILESTREAM dan FileTable menerima atau mengembalikan nama jaringan virtual (VPN) alih-alih nama komputer. Untuk informasi selengkapnya tentang fungsi-fungsi ini, lihat Fungsi FILESTREAM dan FileTable (Transact-SQL).
Semua akses ke data FILESTREAM atau FileTable melalui API sistem file harus menggunakan VPN alih-alih nama komputer. Untuk informasi selengkapnya, lihat FILESTREAM dan FileTable dengan Grup Ketersediaan AlwaysOn (SQL Server).