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 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 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 pengurutan yang akan digunakan untuk nama file di
Namekolom FileTable.Nama yang akan digunakan untuk 3 kunci utama dan batasan unik yang dibuat secara otomatis.
Membuat FileTable dengan Transact-SQL
Buat FileTable dengan memanggil pernyataan CREATE TABLE dengan AS FILETABLE opsi . 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 dari
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 kolasi yang akan diterapkan pada kolomNamedi 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 menentukandatabase_default, kolom mewarisi kolase database saat ini. Jika kolasi database saat ini peka terhadap huruf besar/kecil, kesalahan akan muncul danCREATE TABLEoperasi 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 di artikel ini.
FILETABLE_PRIMARY_KEY_CONSTRAINT_NAMEFILETABLE_STREAMID_UNIQUE_CONSTRAINT_NAMEFILETABLE_FULLPATH_UNIQUE_CONSTRAINT_NAME
Examples
Contoh berikut membuat FileTable baru dan menentukan nilai yang ditentukan pengguna untuk keduanya, yaitu 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 ada, nilai FILETABLE_DIRECTORY menjadi nama FileTable, nilai FILETABLE_COLLATE_FILENAME menjadi database_default, dan kunci utama serta batasan unik menerima nama yang dihasilkan oleh sistem.
CREATE TABLE DocumentStore AS FILETABLE;
GO
Membuat FileTable dengan 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 bisa Anda sesuaikan dan jalankan untuk membuat FileTable. Gunakan opsi Tentukan Nilai untuk Parameter Templat pada menu Kueri untuk mengkustomisasi skrip dengan mudah.
Persyaratan dan batasan 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
CREATE TABLEdari perintah 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
CREATE TABLEdari pernyataan ...AS FILETABLE. Namun Anda dapat menambahkan batasan nanti dengan menggunakanALTER TABLEpernyataan.Anda tidak dapat membuat FileTable di
tempdbdatabase atau di database sistem lainnya.Anda tidak dapat membuat FileTable sebagai tabel sementara.
Mengubah FileTable
Karena FileTable memiliki skema yang telah ditentukan 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 ALTER TABLE pernyataan untuk mengaktifkan atau menonaktifkan namespace FileTable, termasuk batasan yang ditentukan sistem, lihat Mengelola FileTables.
Mengubah Direktori untuk FileTable dengan Menggunakan Transact-SQL
Panggil pernyataan perintah ALTER TABLE dan masukkan nilai baru yang valid untuk opsi SET untuk FILETABLE_DIRECTORY.
Example
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 batasan 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.
Menghapus FileTable
Anda dapat menghilangkan FileTable dengan menggunakan sintaks biasa untuk pernyataan DROP TABLE .
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 subdirektori yang dimuat menghilang dari file FILESTREAM dan hierarki direktori database.
Perintah DROP TABLE gagal jika ada handle 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.
--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 | Clustered |
|---|---|---|
[path_locator] ASC |
Kunci Utama | Tidak. |
[parent_path_locator] ASC, [name] ASC |
Unik | Tidak. |
[stream_id] ASC |
Unik | Tidak. |
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_timeis_archiveis_directoryis_hiddenis_offlineis_readonlyis_systemis_temporarylast_access_timelast_write_timepath_locatorstream_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 sebelumnya, dinamai dalam format <constraintType>_<tablename>[_<columnname>]_<uniquifier> di mana:
'<constraint_type> adalah CK (periksa batasan), 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.