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.

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

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