Bagikan melalui


Bekerja dengan Direktori dan Jalur di FileTables

Menjelaskan struktur direktori tempat file disimpan dalam FileTables.

Cara: Bekerja dengan Direktori dan Jalur di FileTables

Anda dapat menggunakan 3 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)

Cara: 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  

Pembatasan penting

Tingkat berlapis

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:

  1. Berbagi yang diaktifkan untuk akses I/O file FILESTREAM di tingkat instans SQL Server.

  2. DIRECTORY_NAME ditentukan pada tingkat database.

  3. 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.

  • DIRECTORY_NAME tingkat database null secara default saat Anda membuat database baru. Administrator dapat mengatur atau mengubah nama ini dengan menggunakan pernyataan ALTER DATABASE . Nama harus unik (dalam perbandingan yang tidak peka huruf besar/kecil) dalam instans tersebut.

  • Anda biasanya memberikan nama FILETABLE_DIRECTORY sebagai bagian dari pernyataan CREATE TABLE saat Anda membuat FileTable. Anda dapat mengubah nama ini dengan menggunakan perintah ALTER TABLE .

  • 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 kolom is_directory dan kolom file_stream yang berisi data FILESTREAM dalam FileTable.

nilai is_directory nilai file_stream Perilaku
SALAH NULL Ini adalah kombinasi yang tidak valid yang akan ditangkap oleh batasan yang ditentukan sistem.
SALAH <value> Item mewakili file.
BENAR NULL Item mewakili direktori.
BENAR <value> Ini adalah kombinasi yang tidak valid yang akan ditangkap oleh batasan yang ditentukan sistem.

Menggunakan Nama Jaringan Virtual (VN) dengan Grup Ketersediaan AlwaysOn

Saat database yang berisi data FILESTREAM atau FileTable termasuk dalam grup ketersediaan AlwaysOn:

Lihat Juga

Mengaktifkan Prasyarat untuk FileTable
Membuat, Mengubah, dan Menghilangkan FileTables
Mengakses FileTables dengan Transact-SQL
Mengakses FileTables dengan API Input-Output File