Bagikan melalui


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:

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

  2. FILETABLE_COLLATE_FILENAME. Menentukan nama kolase yang akan diterapkan ke kolom Nama di FileTable.

    1. Kolase yang ditentukan harus tidak peka huruf besar/kecil untuk mematuhi semantik penamaan file Windows.

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

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

Lihat Juga

Kelola FileTables