Membuat, Mengubah, dan Menghilangkan FileTables
Berlaku untuk: SQL Server
Menjelaskan cara membuat FileTable baru, atau mengubah atau menghilangkan FileTable yang sudah ada.
Membuat FileTable
FileTable adalah tabel pengguna khusus yang memiliki skema yang telah ditentukan sebelumnya dan tetap. Skema ini menyimpan data FILESTREAM, informasi file dan direktori, dan atribut file. Untuk informasi tentang skema FileTable, lihat Skema FileTable.
Anda dapat membuat FileTable baru dengan menggunakan Transact-SQL atau SQL Server Management Studio. Karena FileTable memiliki skema tetap, Anda tidak perlu menentukan daftar kolom. Sintaks sederhana untuk membuat FileTable memungkinkan Anda menentukan:
Nama direktori. Dalam hierarki folder FileTable, direktori tingkat tabel ini menjadi turunan direktori database yang ditentukan di tingkat database, dan induk file atau direktori yang disimpan dalam tabel.
Nama kolase yang akan digunakan untuk nama file di kolom Nama FileTable.
Nama yang akan digunakan untuk 3 kunci utama dan batasan unik yang dibuat secara otomatis.
Cara: Membuat FileTable
Membuat FileTable dengan Menggunakan Transact-SQL
Buat FileTable dengan memanggil pernyataan CREATE TABLE (Transact-SQL) dengan opsi AS FileTable . Karena FileTable memiliki skema tetap, Anda tidak perlu menentukan daftar kolom. Anda bisa menentukan pengaturan berikut untuk FileTable baru:
FILETABLE_DIRECTORY. Menentukan direktori yang berfungsi sebagai direktori akar untuk semua file dan direktori yang disimpan dalam FileTable. Nama ini harus unik di antara semua nama direktori FileTable dalam database. Perbandingan keunikan tidak peka huruf besar/kecil, terlepas dari pengaturan kolase saat ini.
Nilai ini memiliki jenis data nvarchar(255) dan menggunakan kolase tetap Latin1_General_CI_AS_KS_WS.
Nama direktori yang Anda berikan harus mematuhi persyaratan sistem file untuk nama direktori yang valid.
Nama ini harus unik di antara semua nama direktori FileTable dalam database. Perbandingan keunikan tidak peka huruf besar/kecil, terlepas dari pengaturan kolase saat ini.
Jika Anda tidak memberikan nama direktori saat membuat FileTable, maka nama FileTable itu sendiri digunakan sebagai nama direktori.
FILETABLE_COLLATE_FILENAME. Menentukan nama kolase yang akan diterapkan ke kolom Nama di FileTable.
Kolase yang ditentukan harus tidak peka huruf besar/kecil untuk mematuhi semantik penamaan file Windows.
Jika Anda tidak memberikan nilai untuk FILETABLE_COLLATE_FILENAME, atau Anda menentukan database_default, kolom mewarisi kolase database saat ini. Jika kolatasi database saat ini peka huruf besar/kecil, kesalahan dimunculkan dan operasi CREATE TABLE gagal.
Anda juga dapat menentukan nama yang akan digunakan untuk 3 kunci primer dan batasan unik yang dibuat secara otomatis. Jika Anda tidak memberikan nama, maka sistem menghasilkan nama seperti yang dijelaskan nanti dalam topik ini.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAME
FILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAME
FILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Contoh
Contoh berikut membuat FileTable baru dan menentukan nilai yang ditentukan pengguna untuk FILETABLE_DIRECTORY dan FILETABLE_COLLATE_FILENAME.
CREATE TABLE DocumentStore AS FileTable
WITH (
FileTable_Directory = 'DocumentTable',
FileTable_Collate_Filename = database_default
);
GO
Contoh berikut juga membuat FileTable baru. Karena nilai yang ditentukan pengguna tidak ditentukan, nilai FILETABLE_DIRECTORY menjadi nama FileTable, nilai FILETABLE_COLLATE_FILENAME menjadi database_default, dan kunci utama dan kontraint unik menerima nama yang dihasilkan sistem.
CREATE TABLE DocumentStore AS FileTable;
GO
Membuat FileTable dengan Menggunakan SQL Server Management Studio
Di Object Explorer, perluas objek di bawah database yang dipilih, lalu klik kanan pada folder Tabel , lalu pilih FileTable Baru.
Opsi ini membuka jendela skrip baru yang berisi templat skrip Transact-SQL yang dapat Anda sesuaikan dan jalankan untuk membuat FileTable. Gunakan opsi Tentukan Nilai untuk Parameter Templat pada menu Kueri untuk mengkustomisasi skrip dengan mudah.
Persyaratan dan Pembatasan untuk Membuat FileTable
Anda tidak dapat mengubah tabel yang ada untuk mengonversinya menjadi FileTable.
Direktori induk yang sebelumnya ditentukan pada tingkat database harus memiliki nilai non-null. Untuk informasi tentang menentukan direktori tingkat database, lihat Mengaktifkan Prasyarat untuk FileTable.
FileTable memerlukan grup file FILESTREAM yang valid, karena FileTable berisi kolom FILESTREAM. Anda dapat secara opsional menentukan grup file FILESTREAM yang valid sebagai bagian dari perintah CREATE TABLE untuk membuat FileTable. Jika Anda tidak menentukan grup file, maka FileTable menggunakan grup file FILESTREAM default untuk database. Jika database tidak memiliki grup file FILESTREAM, maka kesalahan akan muncul.
Anda tidak dapat membuat batasan tabel sebagai bagian dari CREATE TABLE... Pernyataan FILETABLE AS. Namun Anda dapat menambahkan batasan nanti dengan menggunakan pernyataan ALTER TABLE .
Anda tidak dapat membuat FileTable di database tempdb atau di salah satu database sistem lainnya.
Anda tidak dapat membuat FileTable sebagai tabel sementara.
Mengubah FileTable
Karena FileTable memiliki skema yang telah ditentukan sebelumnya dan tetap, Anda tidak dapat menambahkan atau mengubah kolomnya. Namun, Anda dapat menambahkan indeks kustom, pemicu, batasan, dan opsi lainnya ke FileTable.
Untuk informasi tentang menggunakan pernyataan ALTER TABLE untuk mengaktifkan atau menonaktifkan namespace FileTable, termasuk batasan yang ditentukan sistem, lihat Mengelola FileTables.
Cara: Mengubah Direktori untuk FileTable
Mengubah Direktori untuk FileTable dengan Menggunakan Transact-SQL
Panggil pernyataan ALTER TABLE dan berikan nilai baru yang valid untuk opsi set FILETABLE_DIRECTORY .
Contoh
ALTER TABLE filetable_name
SET ( FILETABLE_DIRECTORY = N'directory_name' );
GO
Mengubah Direktori untuk FileTable dengan Menggunakan SQL Server Management Studio
Di Object Explorer, klik kanan fileTable dan pilih Properti untuk membuka kotak dialog Properti Tabel. Pada halaman FileTable , masukkan nilai baru untuk nama direktori FileTable.
Persyaratan dan Pembatasan untuk Mengubah FileTable
Anda tidak dapat mengubah nilai FILETABLE_COLLATE_FILENAME.
Anda tidak dapat mengubah, menghilangkan, atau menonaktifkan kolom FileTable yang ditentukan sistem.
Anda tidak dapat menambahkan kolom pengguna baru, kolom komputasi, atau kolom komputasi yang dipertahankan ke FileTable.
Menjatuhkan FileTable
Anda dapat menghilangkan FileTable dengan menggunakan sintaks biasa untuk pernyataan DROP TABLE (Transact-SQL ).
Saat Anda menjatuhkan FileTable, objek berikut juga dihilangkan:
Semua kolom FileTable dan semua objek yang terkait dengan tabel, seperti indeks, batasan, dan pemicu, juga dihilangkan.
Direktori FileTable dan sub-direktori yang dimuatnya menghilang dari file FILESTREAM dan hierarki direktori database.
Perintah DROP TABLE gagal jika ada handel file terbuka di namespace file FileTable. Untuk informasi tentang menutup handel terbuka, lihat Mengelola FileTables.
Objek Database Lain Dibuat Saat Anda Membuat FileTable
Saat Anda membuat FileTable baru, beberapa indeks dan batasan yang ditentukan sistem juga dibuat. Anda tidak dapat mengubah atau menghilangkan objek ini; mereka menghilang hanya ketika FileTable itu sendiri dihilangkan. Untuk melihat daftar objek ini, kueri tampilan katalog sys.filetable_system_defined_objects (Transact-SQL).
--View all objects for all filetables, unsorted
SELECT * FROM sys.filetable_system_defined_objects;
GO
--View sorted list with friendly names
SELECT OBJECT_NAME(parent_object_id) AS 'FileTable', OBJECT_NAME(object_id) AS 'System-defined Object'
FROM sys.filetable_system_defined_objects
ORDER BY FileTable, 'System-defined Object';
GO
Indeks yang dibuat saat Anda membuat FileTable baru
Saat Anda membuat FileTable baru, indeks yang ditentukan sistem berikut juga dibuat:
Kolom | Jenis indeks |
---|---|
[path_locator] ASC | Kunci Primer, non-kluster |
[parent_path_locator] ASC [nama] ASC |
Unik, berkluster |
[stream_id] ASC | Unik, berkluster |
Batasan yang dibuat saat Anda membuat FileTable baru
Saat Anda membuat FileTable baru, batasan yang ditentukan sistem berikut juga dibuat:
Kendala | Memberlakukan |
---|---|
Batasan default pada kolom berikut: creation_time is_archive is_directory is_hidden is_offline is_readonly is_system is_temporary last_access_time last_write_time path_locator stream_id |
Batasan default yang ditentukan sistem memberlakukan nilai default untuk kolom yang ditentukan. |
Periksa batasan | Batasan pemeriksaan yang ditentukan sistem memberlakukan persyaratan berikut: Nama file yang valid. Atribut file yang valid. Objek induk harus berupa direktori. Hierarki namespace dikunci selama manipulasi file. |
Konvensi penamaan untuk batasan yang ditentukan sistem
Batasan yang ditentukan sistem yang dijelaskan di atas dinamai dalam format <constraintType>_<tablename>[_<columnname>]_<uniquifier> di mana:
<> constraint_type adalah CK (batasan pemeriksaan), DF (batasan default), FK (kunci asing), PK (kunci primer), atau UQ (batasan unik).
<uniquifier> adalah string yang dihasilkan sistem untuk membuat nama unik. String ini mungkin berisi nama FileTable dan pengidentifikasi unik.