Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 bawaan, fungsi GetFileNamespacePath 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.
DIRECTORY_NAMEditentukan pada tingkat database.Yang
FILETABLE_DIRECTORYditentukan 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 pada 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_NAMEdatabase null secara default saat Anda membuat database baru. Administrator dapat mengatur atau mengubah nama ini dengan menggunakanALTER DATABASEpernyataan . Nama harus unik (dalam perbandingan yang tidak peka huruf besar/kecil) dalam instans tersebut.Anda biasanya memberikan
FILETABLE_DIRECTORYnama sebagai bagian dari pernyataanCREATE TABLEsaat Anda membuat FileTable. Anda dapat mengubah nama ini dengan menggunakanALTER TABLEperintah .Anda tidak dapat mengganti nama direktori akar ini melalui operasi I/O file.
Anda tidak dapat membuka direktori root ini dengan gagang berkas 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 properti is_directory | nilai aliran_berkas | Perilaku |
|---|---|---|
FALSE |
NULL |
Ini adalah kombinasi yang tidak valid yang ditangkap oleh batasan yang ditentukan sistem. |
FALSE |
<value> |
Item tersebut mewakili sebuah berkas. |
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).