Mengakses FileTables dengan API Input-Output File
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 mendapatkan handel. Handel kemudian dapat digunakan untuk mengalirkan data, untuk menghitung atau mengatur direktori, untuk mendapatkan atau mengatur atribut file, untuk menghapus file atau direktori, dan sebagainya.
Membuat File dan Direktori dalam FileTable
File atau direktori dapat dibuat dalam FileTable dengan memanggil API I/O file seperti CreateFile atau CreateDirectory.
Semua bendera disposisi pembuatan, mode berbagi, 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 konkurensi akses diberlakukan ketika beberapa operasi I/O file bersamaan atau operasi Transact-SQL memengaruhi file atau direktori yang sama dalam hierarki.
Membaca File dan Direktori dalam FileTable
Semantik isolasi yang diterapkan diberlakukan di SQL Server untuk semua operasi akses I/O file pada aliran dan data 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/di tempat 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
Handel bisa-tulis yang diperoleh untuk data FILESTREAM dalam FileTable dengan menggunakan fungsi GetFileNamespacePath (Transact-SQL) dapat digunakan untuk membuat pembaruan parsial di tempat pada konten FILESTREAM. Perilaku ini berbeda dari akses FILESTREAM yang ditransaksikan melalui handel yang diperoleh dengan memanggil OpenSQLFILESTREAM() dan melewati konteks transaksi eksplisit.
Semantik Transaksi
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 sepenuhnya transaksional dan akan menghormati semua tingkat transaksional secara konsisten yang saat ini didukung.
Kontrol Konkurensi
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 mengambil kunci yang sesuai pada 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 | Jarang dapat diatur 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 File | 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 memori | Tidak | |
Batalkan I/O | Ya | |
Keamanan | Tidak | Keamanan tingkat berbagi 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 mereka 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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk