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 cara kerja I/O sistem file pada FileTable.
Mulai Menggunakan API I/O File dengan FileTables
Penggunaan utama FileTables diharapkan melalui sistem file Windows dan API I/O file. FileTables mendukung akses non-transaksional melalui kumpulan API I/O file yang tersedia yang kaya.
Akses FILE I/O API biasanya dimulai dengan memperoleh jalur UNC logis untuk file atau direktori. Aplikasi dapat menggunakan pernyataan Transact-SQL dengan fungsi GetFileNamespacePath (Transact-SQL) untuk mendapatkan jalur logis untuk file atau direktori. Untuk informasi selengkapnya, lihat Bekerja dengan Direktori dan Jalur di FileTables.
Kemudian aplikasi menggunakan jalur logis ini untuk mendapatkan handel ke file atau direktori dan melakukan sesuatu dengan objek . Jalur dapat diteruskan ke fungsi API sistem file yang didukung, seperti CreateFile() atau CreateDirectory(), untuk membuat atau membuka file dan memperoleh handle. Handle kemudian dapat digunakan untuk menstreaming data, menghitung atau mengelola direktori, mendapatkan atau mengatur atribut file, menghapus file atau direktori, dan lain-lain.
Membuat File dan Direktori dalam FileTable
File atau direktori dapat dibuat dalam FileTable dengan memanggil API I/O file seperti CreateFile atau CreateDirectory.
Semua parameter disposisi pembuatan, mode penggunaan bersama, dan mode akses didukung. Ini termasuk pembuatan file, penghapusan, dan modifikasi di tempat. Juga didukung adalah pembaruan Namespace File yaitu pembuatan/penghapusan direktori, ganti nama, dan operasi pemindahan.
Pembuatan file atau direktori baru sesuai dengan pembuatan baris baru di FileTable yang mendasar.
Untuk file, data aliran disimpan di kolom file_stream ; untuk direktori, kolom ini null.
Untuk file, kolom is_directory berisi false. Untuk direktori, kolom ini berisi true.
Berbagi dan keserentakan akses diberlakukan ketika beberapa operasi I/O file bersamaan atau operasi Transact-SQL memengaruhi file atau direktori yang sama dalam struktur hierarki.
Membaca File dan Direktori dalam FileTable
Semantik isolasi Read Committed distandarkan di SQL Server untuk semua operasi akses I/O file pada data aliran dan atribut.
Menulis dan Memperbarui File dan Direktori dalam FileTable
Semua operasi penulisan atau pembaruan I/O file pada FileTable tidak transaksional. Artinya, tidak ada transaksi SQL Server yang terikat pada operasi ini, dan tidak ada jaminan ACID yang disediakan.
Semua pembaruan streaming/langsung I/O file didukung untuk FileTable.
Pembaruan pada data atau atribut FILESTREAM melalui API I/O file menghasilkan pembaruan kolom atribut file dan file_stream yang sesuai di FileTable.
Menghapus File dan Direktori dalam FileTable
Semua semantik I/O API file Windows diberlakukan saat Anda menghapus file atau direktori.
Menghapus direktori gagal jika direktori berisi file atau subdirektori apa pun.
Menghapus file atau direktori akan menghapus baris terkait dari FileTable. Ini setara dengan menghapus baris melalui operasi Transact-SQL.
Operasi Sistem File yang Didukung
FileTables mendukung API sistem file yang terkait dengan operasi sistem file berikut:
Manajemen Direktori
Manajemen File
FileTables tidak mendukung operasi berikut:
Manajemen Cakram
Manajemen Volume
NTFS Transaksi
Pertimbangan Tambahan untuk Akses I/O File ke FileTables
Menggunakan Nama Jaringan Virtual (VPN) dengan Grup Ketersediaan AlwaysOn
Ketika database yang berisi data FILESTREAM atau FileTable milik grup ketersediaan AlwaysOn, maka 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).
Pembaruan Parsial
Handle yang dapat ditulis yang diperoleh dari data FILESTREAM dalam FileTable dengan menggunakan fungsi GetFileNamespacePath (Transact-SQL) dapat digunakan untuk melakukan pembaruan parsial secara langsung pada konten FILESTREAM. Perilaku ini berbeda dari akses FILESTREAM yang ditransaksikan melalui handle yang diperoleh dengan memanggil OpenSQLFILESTREAM() dan menggunakan konteks transaksi eksplisit.
Semantik Transaksional
Saat Anda mengakses file dalam FileTable dengan menggunakan API I/O file, operasi ini tidak terkait dengan transaksi pengguna apa pun, dan memiliki karakteristik tambahan berikut:
Karena akses yang tidak ditransaksikan ke data FILESTREAM dalam FileTable tidak terkait dengan transaksi apa pun, itu tidak memiliki semantik isolasi tertentu. Namun SQL Server dapat menggunakan transaksi internal untuk memberlakukan penguncian atau semantik konkurensi pada data FileTable. Setiap transaksi internal jenis ini dilakukan dengan isolasi berkomitmen baca.
Tidak ada jaminan ACID untuk operasi yang tidak ditransaksikan ini pada data FILESTREAM. Jaminan konsistensi mirip dengan yang untuk pembaruan file yang dibuat oleh aplikasi dalam sistem file.
Perubahan ini tidak dapat digulung balik.
Namun, kolom FILESTREAM dalam FileTable juga dapat diakses dengan akses FILESTREAM transaksi dengan memanggil OpenSqlFileStream(). Akses semacam ini dapat bersifat sepenuhnya transaksional dan akan secara konsisten mendukung semua tingkat transaksional yang ada saat ini.
Pengendalian Keserempakan
SQL Server memberlakukan kontrol konkurensi untuk akses FileTable di antara aplikasi sistem file, dan antara aplikasi sistem file dan aplikasi Transact-SQL. Kontrol konkurensi ini dicapai dengan menerapkan kunci yang sesuai pada baris-baris FileTable.
Pemicu
Membuat, memodifikasi, atau menghapus file atau direktori atau atributnya melalui sistem file menghasilkan operasi sisipkan, perbarui, atau hapus yang sesuai di FileTable. Setiap pemicu DML Transact-SQL terkait diaktifkan sebagai bagian dari operasi ini.
Fungsionalitas Sistem File Didukung dalam FileTables
| Kemampuan | Didukung | Komentar |
|---|---|---|
| Oplocks | Ya | Ada dukungan untuk Oplock Tingkat 2, Tingkat 1, Batch, dan Filter. |
| Atribut yang Diperluas | Tidak | |
| Pilah Ulang Titik | Tidak | |
| ACL persisten | Tidak | |
| Aliran Bernama | Tidak | |
| File Jarang | Ya | Kekosongan dapat ditetapkan hanya pada file, dan memengaruhi penyimpanan aliran data. Karena data FILESTREAM disimpan pada volume NTFS, fitur FileTable mendukung file jarang dengan meneruskan permintaan ke sistem file NTFS. |
| Kompresi | Ya | |
| Enkripsi | Ya | |
| TxF | Tidak | |
| ID-Id Berkas | Tidak | |
| ID Objek | Tidak | |
| Tautan simbolis | Tidak | |
| Tautan keras | Tidak | |
| Nama pendek | Tidak | |
| Pemberitahuan perubahan direktori | Tidak | |
| Penguncian rentang byte | Ya | Permintaan penguncian rentang byte diteruskan ke sistem file NTFS. |
| File yang dipetakan ke memori | Tidak | |
| Batalkan I/O | Ya | |
| Keamanan | Tidak | Keamanan berbagi tingkat Windows dan keamanan tingkat tabel dan kolom SQL Server diberlakukan. |
| Jurnal USN | Tidak | Perubahan metadata pada file dan direktori dalam FileTable adalah operasi DML pada database SQL Server. Oleh karena itu mereka dicatat dalam file log database yang sesuai. Namun, itu tidak dicatat dalam jurnal NTFS USN (kecuali untuk perubahan ukuran). Kemampuan pelacakan perubahan SQL Server dapat digunakan untuk menangkap informasi serupa. |
Lihat Juga
Muat File ke dalam FileTables
Bekerja dengan Direktori dan Jalur di FileTables
Mengakses FileTables dengan Transact-SQL
FileTable DDL, Fungsi, Prosedur Tersimpan, dan Tampilan