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 tugas administratif umum untuk mengelola FileTables.
Cara: Mendapatkan Daftar FileTables dan Objek Terkait
Untuk mendapatkan daftar FileTables, kueri salah satu tampilan katalog berikut:
sys.tables (Transact-SQL) (Periksa nilai kolom is_filetable .)
SELECT * FROM sys.filetables;
GO
SELECT * FROM sys.tables WHERE is_filetable = 1;
GO
Untuk mendapatkan daftar objek yang ditentukan sistem yang dibuat saat FileTable terkait dibuat, kueri tampilan katalog sys.filetable_system_defined_objects (Transact-SQL).
SELECT object_id, OBJECT_NAME(object_id) AS 'Object Name'
FROM sys.filetable_system_defined_objects;
GO
Menonaktifkan dan Mengaktifkan Kembali Akses Non-Transaksi di Tingkat Database
Untuk memperoleh akses eksklusif yang diperlukan untuk tugas administratif tertentu, Anda mungkin harus menonaktifkan akses non-transaksional untuk sementara waktu.
Perilaku pernyataan ALTER DATABASE saat mengubah tingkat akses non-transaksional
Saat Anda mengatur akses non-transaksional ke READ_ONLY atau MATI, perintah ALTER DATABASE tidak akan mengembalikan kontrol kepada pengguna jika masih ada jendela file terbuka yang bertentangan dengan operasi yang diminta. Pengendalian file yang bertentangan dengan operasi ini termasuk yang berikut:
Saat Anda mengatur akses ke NONE, semua handel file yang terbuka akan dihentikan.
Saat Anda mengatur akses ke READ_ONLY, semua handel file dibuka untuk akses tulis.
Untuk informasi tentang menutup handle file terbuka, lihat Menutup Handle File Terbuka yang Terkait dengan FileTable dalam topik ini.
Jika perintah ALTER DATABASE dibatalkan atau berakhir dengan batas waktu, maka tingkat akses transaksional tidak diubah.
Jika Anda memanggil pernyataan ALTER DATABASE dengan klausa WITH <penghentian>(ROLLBACK AFTER integer [ SECONDS ] | ROLLBACK SEGERA | NO_WAIT), maka semua handle file non-transaksi yang terbuka akan ditutup.
Peringatan
Menghentikan penangan file yang terbuka dapat menyebabkan pengguna kehilangan data yang belum disimpan. Perilaku ini konsisten dengan perilaku sistem file itu sendiri.
Dampak menonaktifkan akses non-transaksi
Mengubah tingkat akses non-transaksional di tingkat database memiliki efek berikut pada direktori FileTable di bawah direktori tingkat database:
Saat Anda mengatur akses ke NONE, maka semua direktori FileTable dan kontennya tidak lagi dapat diakses atau terlihat.
Saat Anda mengatur akses ke READ_ONLY, maka semua direktori FileTable dan kontennya juga bersifat baca-saja.
Menonaktifkan FILESTREAM di tingkat instans memiliki efek berikut pada direktori tingkat database pada instans tersebut, dan direktori FileTable di bawahnya:
- Tidak ada direktori tingkat database pada instans yang terlihat jika FILESTREAM dinonaktifkan di tingkat instans.
Cara: Menonaktifkan dan Mengaktifkan Kembali Akses Non-Transaksional di Tingkat Database
Untuk informasi selengkapnya, lihat MENGUBAH Opsi SET DATABASE (Transact-SQL).
Untuk menonaktifkan akses non-transaksional penuh
Panggil pernyataan ALTER DATABASE dan ATUR nilai NON_TRANSACTED_ACCESS ke READ_ONLY atau NONAKTIF.
-- Disable write access.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = READ_ONLY );
GO
-- Disable non-transactional access.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF );
GO
Untuk mengaktifkan kembali akses non-transaksi penuh
Panggil pernyataan ALTER DATABASE dan ATUR nilai NON_TRANSACTED_ACCESS ke FULL.
ALTER DATABASE database_name
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL );
GO
Cara: Memastikan Visibilitas FileTables dalam Database
Direktori tingkat database dan direktori FileTable di bawahnya terlihat ketika semua kondisi ini benar:
FILESTREAM diaktifkan pada tingkat instans.
Akses non-transaksi diaktifkan di tingkat database.
Direktori yang valid telah ditentukan di tingkat database.
Menonaktifkan dan Mengaktifkan Kembali Namespace FileTable di Tingkat Tabel
Menonaktifkan namespace FileTable menonaktifkan semua batasan dan pemicu yang ditentukan sistem yang dibuat dengan FileTable. Ini berguna dalam kasus di mana FileTable harus diatur ulang dalam skala besar dengan menggunakan operasi Transact-SQL tanpa menimbulkan biaya pemberlakuan semantik FileTable. Namun operasi ini dapat meninggalkan FileTable dalam status tidak konsisten, dan dapat mencegah pengaktifan kembali namespace FileTable.
Menonaktifkan namespace FileTable memiliki hasil berikut:
Kolom dan data FileTable tidak dihilangkan secara fisik dari tabel.
Direktori FileTable dan file dan direktori yang dikandungnya menghilang dari sistem file dan tidak tersedia untuk akses i/o file.
Kolom FileTable yang ditentukan sistem tidak dapat dihilangkan dan dibuat ulang; namun, jika tidak, mereka berperilaku seperti kolom biasa untuk operasi DML.
Handel file terbuka mencegah batasan FileTable dinonaktifkan, karena operasi ini memerlukan kunci skema pada tabel.
Penerapan semua semantik FileTable, termasuk batasan dan pemicu yang ditentukan sistem, berhenti setelah namespace FileTable dinonaktifkan.
Mengaktifkan kembali namespace FileTable memiliki hasil berikut:
FileTable diperiksa konsistensinya. Jika inkonsistensi ditemukan, maka kesalahan dimunculkan dan FileTable tetap dinonaktifkan; jika tidak, FileTable diaktifkan kembali.
Penerapan semantik FileTable, termasuk batasan dan pemicu yang ditentukan sistem, dipulihkan.
Direktori FileTable serta file dan direktori yang dikandungnya menjadi terlihat dalam sistem file dan menjadi tersedia untuk akses i/o file.
Cara: Menonaktifkan dan Mengaktifkan Kembali Namespace FileTable di Tingkat Tabel
Panggil pernyataan ALTER TABLE dengan { ENABLE | DISABLE } FILETABLE_NAMESPACE.
Untuk menonaktifkan namespace FileTable
ALTER TABLE filetable_name
DISABLE FILETABLE_NAMESPACE;
GO
Untuk mengaktifkan kembali namespace FileTable
ALTER TABLE filetable_name
ENABLE FILETABLE_NAMESPACE;
GO
Menghentikan Handle File Terbuka yang Terkait dengan FileTable
Pengendali yang terbuka ke file yang disimpan dalam FileTable dapat mencegah akses eksklusif yang diperlukan untuk tugas-tugas administratif tertentu. Untuk mengaktifkan tugas mendesak, Anda mungkin harus mematikan handel file terbuka yang terkait dengan satu atau beberapa FileTable.
Peringatan
Menghentikan penanganan file terbuka dapat menyebabkan pengguna kehilangan data yang belum disimpan. Perilaku ini konsisten dengan perilaku sistem file itu sendiri.
Panduan: Mendapatkan Daftar Handle File Terbuka yang Terkait dengan FileTable
Kueri tampilan katalog sys.dm_filestream_non_transacted_handles (Transact-SQL).
SELECT * FROM sys.dm_filestream_non_transacted_handles;
GO
Cara: Menghentikan Handle File Terbuka yang Terkait dengan FileTable
Panggil prosedur tersimpan sp_kill_filestream_non_transacted_handles (Transact-SQL) dengan argumen yang sesuai untuk mematikan semua handel file yang terbuka dalam database atau di FileTable, atau untuk mematikan handel tertentu.
USE database_name;
-- Kill all open handles in all the filetables in the database.
EXEC sp_kill_filestream_non_transacted_handles;
GO
-- Kill all open handles in a single filetable.
EXEC sp_kill_filestream_non_transacted_handles @table_name = 'filetable_name';
GO
-- Kill a single handle.
EXEC sp_kill_filestream_non_transacted_handles @handle_id = integer_handle_id;
GO
Cara: Mengidentifikasi Kunci yang Disimpan oleh FileTables
Sebagian besar kunci yang diambil oleh FileTables sesuai dengan file yang dibuka oleh aplikasi.
Untuk mengidentifikasi file terbuka dan kunci terkait
Gabungkan bidang request_owner_id dalam tampilan manajemen dinamis sys.dm_tran_locks (Transact-SQL) dengan bidang fcb_id di sys.dm_filestream_non_transacted_handles (Transact-SQL). Dalam beberapa kasus, penguncian tidak sesuai dengan satu handle file yang terbuka.
SELECT opened_file_name
FROM sys.dm_filestream_non_transacted_handles
WHERE fcb_id IN
( SELECT request_owner_id FROM sys.dm_tran_locks );
GO
Keamanan FileTable
File dan direktori yang disimpan dalam FileTables diamankan oleh keamanan SQL Server saja. Keamanan berbasis tabel dan kolom diberlakukan untuk akses sistem file serta akses Transact-SQL. API keamanan sistem file Windows dan pengaturan ACL tidak didukung.
Izin keamanan dan akses yang berlaku untuk grup file dan kontainer FILESTREAM juga berlaku untuk FileTables, karena data file disimpan sebagai kolom FILESTREAM di FileTable.
Keamanan FileTable dan Akses Transact-SQL
Akses T-SQL ke data di FileTables diamankan dengan cara yang sama seperti tabel lainnya. Pemeriksaan keamanan tingkat tabel dan kolom yang sesuai dilakukan untuk setiap operasi yang mengakses atau mengubah data.
Keamanan FileTable dan Akses Sistem File
API sistem file memerlukan izin SQL Server yang sesuai pada seluruh baris di FileTable (yaitu, izin tingkat tabel) untuk membuka handel ke file atau direktori yang disimpan di FileTable. Jika pengguna tidak memiliki izin SQL Server yang sesuai pada kolom apa pun di FileTable, maka akses sistem file ditolak.
Backup dan FileTables
Ketika Anda menggunakan SQL Server untuk mencadangkan sebuah FileTable, data FILESTREAM dicadangkan bersama dengan data terstruktur pada database. Jika Anda tidak ingin mencadangkan data FILESTREAM dengan data relasional, Anda dapat menggunakan cadangan parsial untuk mengecualikan grup file FILESTREAM.
Konsistensi Transaksi Pencadangan FileTable
Banyak alat dan operasi administratif, termasuk pencadangan, pencadangan log, dan replikasi transaksional, membaca data yang konsisten secara transaksional dengan cara membaca log transaksi. Saat ini, mereka membaca data FILESTREAM apa pun yang diperbarui sebagai bagian dari transaksi. Ketika akses non-transaksi tidak diaktifkan di tingkat database, alat dan operasi ini bekerja dengan konsistensi transaksi penuh.
Namun, ketika akses non-transaksi yang penuh diaktifkan, maka FileTable dapat berisi data yang diperbarui lebih baru-baru ini (melalui pembaruan non-transaksi) daripada transaksi yang dibaca alat atau proses dari log transaksi. Ini berarti bahwa operasi pemulihan "titik waktu" ke transaksi tertentu mungkin berisi data FILESTREAM yang lebih baru daripada transaksi tersebut. Ini adalah perilaku yang diharapkan ketika pembaruan non-transaksional diizinkan pada FileTables.
Profiler SQL Server dan FileTables
SQL Server Profiler dapat menangkap operasi Buka dan Tutup File Windows dalam output pelacakan untuk file yang disimpan dalam FileTable.
Pengauditan dan FileTables
FileTable dapat diaudit sama seperti tabel lainnya. Namun, pola akses Win32 tidak berdasarkan operasi yang berbasis set. Satu tindakan dalam sistem file diterjemahkan ke dalam beberapa operasi DML Transact-SQL. Misalnya, membuka file di Microsoft Word diterjemahkan ke dalam beberapa operasi buka/tutup/buat/ganti nama/hapus dan aktivitas DML Transact-SQL yang sesuai. Hal ini menghasilkan catatan audit yang sangat rinci, di mana sulit untuk mengaitkan catatan antara tindakan sistem file dan catatan audit DML Transact-SQL yang bersesuaian.
DBCC dan FileTables
Anda dapat menggunakan DBCC CHECKCONSTRAINTS untuk memvalidasi batasan pada FileTable termasuk batasan yang ditentukan sistem.
Lihat Juga
Kompatibilitas FileTable dengan Fitur SQL Server Lainnya
FileTable DDL, Fungsi, Prosedur Tersimpan, dan Tampilan