Bagikan melalui


Kompatibilitas FileTable dengan Fitur SQL Server Lainnya

Menjelaskan cara kerja FileTables dengan fitur SQL Server lainnya.

Grup Ketersediaan AlwaysOn dan FileTables

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

  • Fungsionalitas FileTable didukung sebagian oleh Grup Ketersediaan AlwaysOn. Setelah failover, data FileTable dapat diakses pada replika utama, tetapi data FileTable tidak dapat diakses pada replika sekunder yang dapat dibaca.

    Nota

    Perhatikan bahwa setelah failover semua fungsi FILESTREAM didukung. Data FILESTREAM dapat diakses pada replika sekunder yang dapat dibaca dan pada primer baru.

  • 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).

Partisi dan FileTables

Partisi tidak didukung pada FileTables. Dengan dukungan untuk beberapa grup file FILESTREAM, masalah peningkatan skala murni dapat ditangani tanpa harus menggunakan pemartisian dalam sebagian besar skenario (tidak seperti SQL 2008 FILESTREAMs).

Replikasi dan Tabel File

Replikasi dan fitur terkait (termasuk replikasi transaksional, replikasi penggabungan, penangkapan data perubahan, dan pelacakan perubahan) tidak didukung dengan FileTables.

Semantik Transaksi dan FileTables

Aplikasi Windows
Aplikasi Windows tidak memahami transaksi database, sehingga operasi penulisan Windows tidak menyediakan properti ACID dari transaksi database. Oleh karena itu pembatalan transaksional dan pemulihan tidak dimungkinkan dengan operasi pembaruan Windows.

aplikasiTransact-SQL
Untuk aplikasi TSQL yang bekerja pada kolom FILESTREAM (file_stream) di FileTable, semantik isolasi sama dengan tipe data FILESTREAM dalam tabel pengguna biasa.

Pemberitahuan Permintaan dan FileTables

Kueri tidak boleh berisi referensi ke kolom FILESTREAM di FileTable, dalam klausa WHERE atau bagian lain dari kueri.

SELECT INTO dan FileTables

Pernyataan SELECT INTO dari FileTable tidak akan menyebarkan semantik FileTable pada tabel tujuan yang dibuat (sama seperti kolom FILESTREAM dalam tabel biasa). Semua kolom tabel tujuan akan berulah seperti kolom normal. Mereka tidak akan memiliki semantik FileTable yang terkait dengannya.

Pemicu dan FileTables

Pemicu di Bahasa Definisi Data (DDL)
Tidak ada pertimbangan khusus untuk pemicu DDL dengan FileTables. Pemicu DDL normal akan diaktifkan untuk operasi Buat/Ubah database serta operasi CREATE/ALTER TABLE untuk FileTables. Pemicu dapat mengambil data peristiwa aktual yang menyertakan teks perintah DDL dan informasi lainnya dengan memanggil fungsi EVENTDATA(). Tidak ada peristiwa atau perubahan baru pada skema Eventdata yang ada.

Pemicu DML (Bahasa Manipulasi Data)
Pembatasan ini akan diberlakukan selama operasi DDL untuk membuat pemicu.

  • FileTables tidak akan mendukung pemicu INSTEAD OF untuk operasi DML. Ini adalah batasan yang ada pada semua tabel yang berisi kolom FILESTREAM.

  • FileTables akan mendukung pemicu AFTER untuk operasi DML.

  • Pemicu yang ditentukan pada FileTable tidak dapat memperbarui FileTable apa pun (termasuk FileTable induk). Pembatasan ini ada terutama untuk mencegah pemicu masuk ke konflik penguncian dengan kunci yang dipegang oleh akses sistem file dalam transaksi yang sama.

Akses non-transaksional dan efeknya pada pemicu

  • Ketika akses pembaruan non-transaksional diizinkan dalam database, dimungkinkan untuk melakukan pembaruan di tempat data FILESTREAM dalam tabel apa pun, termasuk FileTable dalam database tersebut. Karena kemungkinan ini, citra sebelumnya dari konten FILESTREAM mungkin tidak tersedia untuk digunakan oleh pemicu.

  • Untuk operasi pembaruan non-transaksi melalui sistem File, SQL Server akan membuat transaksi internal untuk menangkap operasi CloseHandle dan pemicu DML yang ditentukan dapat diaktifkan sebagai bagian dari transaksi tersebut. Pembatalan transaksi semacam itu di dalam tubuh pemicu, meskipun tidak dicegah, tidak membatalkan perubahan yang dilakukan pada FILESTREAM. Putar kembali seperti itu juga dapat mencegah pemicu Pembaruan diaktifkan, meskipun konten FILESTREAM mungkin telah diubah.

  • Selain dampak ini, pemicu pada FileTable perlu menangani beberapa perilaku tambahan

    • Dalam kasus operasi pembaruan non-transaksional pada FileTable melalui sistem berkas, ada kemungkinan bahwa konten FILESTREAM dapat dikunci secara eksklusif oleh operasi Win32 lainnya dan mungkin tidak dapat diakses untuk baca/tulis melalui badan pemicu. Dalam kasus seperti itu, setiap upaya untuk mengakses konten FILESTREAM dalam badan pemicu mungkin menghasilkan kesalahan "Pelanggaran Berbagi". Pemicu harus dirancang untuk menangani kesalahan tersebut dengan tepat.

    • SETELAH gambar FILESTREAM mungkin tidak stabil karena dalam beberapa kasus mungkin secara aktif ditulis oleh pembaruan non-transaksi pada saat yang sama (karena mode berbagi yang diizinkan dalam akses sistem File).

  • Penghentian abnormal handle Win32, misalnya penghentian paksa oleh admin atau crash database, tidak akan menjalankan pemicu pengguna selama operasi pemulihan, meskipun konten FILESTREAM mungkin telah diubah oleh aplikasi Win32 yang dihentikan secara abnormal.

Tampilan dan FileTables

Tampilan
Tampilan dapat dibuat pada FileTable seperti pada tabel lain. Namun pertimbangan berikut berlaku untuk tampilan yang dibuat pada FileTable:

  • Tampilan tidak akan memiliki semantik FileTable. yaitu kolom dalam tampilan (termasuk kolom Atribut File) bereaksi seperti kolom tampilan normal tanpa semantik khusus dan sama berlaku untuk baris yang mewakili File/direktori.

  • Tampilan mungkin dapat diperbarui berdasarkan semantik "tampilan yang dapat diperbarui", tetapi batasan tabel yang mendasar dapat menolak pembaruan seperti dalam tabel.

  • Jalur file dapat divisualisasikan dalam tampilan dengan ditambahkan sebagai kolom eksplisit dalam tampilan. Contohnya:

    CREATE VIEW MP3FILES AS SELECT column1, column2, ..., GetFileNamespacePath() AS PATH, column3,... FROM Documents

Tampilan Terindeks
Tampilan terindeks saat ini tidak dapat menyertakan kolom FILESTREAM atau kolom komputasi/bertahan yang bergantung pada kolom FILESTREAM. Perilaku ini tetap tidak berubah dengan tampilan yang ditentukan pada FileTable juga.

Isolasi Rekam Jepret dan FileTables

Baca Isolasi Rekam Jepret yang Diterapkan (RCSI) dan Isolasi Rekam Jepret (SI) mengandalkan kemampuan untuk memiliki rekam jepret data yang tersedia untuk pembaca bahkan ketika operasi pembaruan terjadi pada data. Namun FileTable memungkinkan akses tulis non-transaksi ke data Filestream. Akibatnya, pembatasan berikut berlaku untuk penggunaan fitur ini dalam database yang berisi FileTables:

  • Database yang berisi FileTable dapat diubah untuk mengaktifkan RCSI/SI.

  • Saat akses non_transactional diatur ke PENUH untuk database, maka transaksi yang berjalan di bawah RCSI atau SI memiliki perilaku berikut:

    • Pembacaan Transact-SQL kolom file_stream FileTable gagal. INSERT dan UPDATE ke kolom masih berhasil, selama tidak dibaca dari kolom file_stream.

    • Jika pernyataan Transact-SQL menentukan petunjuk tabel READCOMMITTEDLOCK, bacaan berhasil, dan mengambil kunci pada baris, daripada menggunakan penerapan versi baris.

    • Permintaan untuk membuka Win32 FileStream yang ditransaksikan juga gagal.

    • Akses FileTable Win32 yang tidak ditransaksikan berhasil. Semua kueri internal yang dilakukan oleh FileTable tidak terpengaruh.

    • Pengindeksan teks penuh selalu berhasil, apa pun opsi database (READ_COMMITTED_SNAPSHOT atau ALLOW_SNAPSHOT_ISOLATION).

Database Sekunder yang Dapat Dibaca

Pertimbangan yang sama berlaku untuk database sekunder yang dapat dibaca untuk rekam jepret, seperti yang dijelaskan di bagian sebelumnya, Isolasi Rekam Jepret dan FileTables.

Database yang Terkandung dan FileTables

Fitur FILESTREAM tempat fitur FileTable bergantung memerlukan beberapa konfigurasi di luar database. Oleh karena itu, database yang menggunakan FILESTREAM atau FileTable tidak sepenuhnya terkandung.

Anda bisa mengatur penahanan database ke PARSIAL jika Anda ingin menggunakan fitur tertentu dari database yang terkandung, seperti pengguna mandiri. Namun, dalam hal ini, Anda harus menyadari bahwa beberapa pengaturan database tidak terkandung dalam database dan tidak dipindahkan secara otomatis saat database bergerak.

Lihat Juga

Kelola FileTables