Kompatibilitas FILESTREAM dengan fitur SQL Server lainnya

Berlaku untuk:SQL Server

Karena data FILESTREAM berada dalam sistem file, topik ini menyediakan beberapa pertimbangan, pedoman, dan batasan untuk menggunakan FILESTREAM dengan fitur berikut di SQL Server:

SQL Server Integration Services (SSIS)

SQL Server Integration Services (SSIS) menangani data FILESTREAM dalam aliran data seperti data BLOB lainnya dengan menggunakan jenis data SSIS DT_IMAGE.

Anda dapat menggunakan transformasi Impor Kolom untuk memuat file dari sistem file ke dalam kolom FILESTREAM. Anda juga dapat menggunakan transformasi Ekspor Kolom untuk mengekstrak file dari kolom FILESTREAM ke lokasi lain dalam sistem file.

Kueri Terdistribusi dan Server Tertaut

Anda dapat bekerja dengan data FILESTREAM melalui kueri terdistribusi dan server tertaut dengan memperlakukannya sebagai data varbinary(max). Anda tidak dapat menggunakan fungsi FILESTREAM PathName() dalam kueri terdistribusi yang menggunakan nama empat bagian, bahkan ketika nama merujuk ke server lokal. Namun Anda dapat menggunakan PathName() dalam kueri dalam kueri pass-through yang menggunakan OPENQUERY().

Enkripsi

Data FILESTREAM tidak dienkripsi bahkan ketika enkripsi data transparan diaktifkan.

Snapshot database

SQL Server tidak mendukung rekam jepret database untuk grup file FILESTREAM. Jika grup file FILESTREAM disertakan dalam klausul CREATE DATABASE ON, pernyataan akan gagal dan kesalahan akan muncul.

Saat Anda menggunakan FILESTREAM, Anda dapat membuat rekam jepret database dari grup file standar (non-FILESTREAM). Grup file FILESTREAM ditandai sebagai offline untuk rekam jepret database tersebut.

Pernyataan SELECT yang dijalankan pada tabel FILESTREAM dalam rekam jepret database tidak boleh menyertakan kolom FILESTREAM; jika tidak, pesan kesalahan berikut akan dikembalikan:

Could not continue scan with NOLOCK due to data movement.

Replikasi

Kolom varbinary(max) yang mengaktifkan atribut FILESTREAM di Publisher dapat direplikasi ke Pelanggan dengan atau tanpa atribut FILESTREAM. Untuk menentukan cara kolom direplikasi, gunakan kotak dialog Properti Artikel - <Artikel> atau @schema_option parameter sp_addarticle atau sp_addmergearticle. Data yang direplikasi ke kolom varbinary(max) yang tidak memiliki atribut FILESTREAM tidak boleh melebihi batas 2 GB untuk jenis data tersebut; jika tidak, kesalahan run-time dihasilkan. Sebaiknya Anda mereplikasi atribut FILESTREAM, kecuali Anda mereplikasi data ke SQL Server 2005 (9.x). Mereplikasi tabel yang memiliki kolom FILESTREAM ke Pelanggan SQL Server 2000 (8.x) tidak didukung, terlepas dari opsi skema yang ditentukan.

Catatan

Mereplikasi nilai data besar dari SQL Server ke Pelanggan SQL Server 2005 (9.x) dibatasi hingga maksimum nilai data 256 MB. Untuk informasi selengkapnya, lihat Spesifikasi Kapasitas Maksimum.

Pertimbangan untuk Replikasi Transaksional

Jika Anda menggunakan kolom FILESTREAM dalam tabel yang diterbitkan untuk replikasi transaksional, perhatikan pertimbangan berikut:

  • Jika ada tabel yang menyertakan kolom yang memiliki atribut FILESTREAM, Anda tidak dapat menggunakan nilai rekam jepret database atau karakter rekam jepret database untuk @sync_method properti sp_addpublication.

  • Opsi ukuran repl teks maks menentukan jumlah maksimum data yang dapat disisipkan ke dalam kolom yang diterbitkan untuk replikasi. Opsi ini dapat digunakan untuk mengontrol ukuran data FILESTREAM yang direplikasi.

  • Jika Anda menentukan opsi skema untuk mereplikasi atribut FILESTREAM, tetapi Anda memfilter kolom pengidentifikasi unik yang diperlukan FILESTREAM atau Anda menentukan untuk tidak mereplikasi batasan UNIK untuk kolom, replikasi tidak mereplikasi atribut FILESTREAM. Kolom hanya direplikasi sebagai kolom varbinary(maks).

Pertimbangan untuk Replikasi Penggabungan

Jika Anda menggunakan kolom FILESTREAM dalam tabel yang diterbitkan untuk replikasi penggabungan, perhatikan pertimbangan berikut:

  • Baik replikasi penggabungan maupun FILESTREAM memerlukan kolom pengidentifikasi unik jenis data untuk mengidentifikasi setiap baris dalam tabel. Gabungkan replikasi secara otomatis menambahkan kolom jika tabel tidak memilikinya. Replikasi penggabungan mengharuskan kolom memiliki kumpulan properti ROWGUIDCOL dan default NEWID() atau NEWSEQUENTIALID(). Selain persyaratan ini, FILESTREAM mengharuskan batasan UNIK ditentukan untuk kolom. Persyaratan ini memiliki konsekuensi berikut:

    • Jika Anda menambahkan kolom FILESTREAM ke tabel yang sudah diterbitkan untuk replikasi penggabungan, pastikan kolom uniqueidentifier memiliki batasan UNIK. Jika tidak memiliki batasan UNIK, tambahkan batasan bernama ke tabel dalam database publikasi. Secara default, replikasi penggabungan akan menerbitkan perubahan skema ini, dan akan diterapkan ke setiap database langganan.

      Jika Anda menambahkan batasan UNIK secara manual seperti yang dijelaskan dan Anda ingin menghapus replikasi penggabungan, Anda harus terlebih dahulu menghapus batasan UNIK; jika tidak, penghapusan replikasi akan gagal.

    • Secara default, replikasi penggabungan menggunakan NEWSEQUENTIALID() karena dapat memberikan performa yang lebih baik daripada NEWID(). Jika Anda menambahkan kolom uniqueidentifier ke tabel yang akan diterbitkan untuk replikasi penggabungan, tentukan NEWSEQUENTIALID() sebagai default.

  • Replikasi penggabungan mencakup pengoptimalan untuk mereplikasi jenis objek besar. Pengoptimalan ini dikendalikan oleh @stream_blob_columns parameter sp_addmergearticle. Jika Anda mengatur opsi skema untuk mereplikasi atribut FILESTREAM, @stream_blob_columns nilai parameter diatur ke true. Pengoptimalan ini dapat ditimpa dengan menggunakan sp_changemergearticle. Prosedur tersimpan ini memungkinkan Anda untuk mengatur @stream_blob_columns ke false. Jika Anda menambahkan kolom FILESTREAM ke tabel yang sudah diterbitkan untuk replikasi penggabungan, kami sarankan Anda mengatur opsi ke true dengan menggunakan sp_changemergearticle.

  • Mengaktifkan opsi skema untuk FILESTREAM setelah artikel dibuat dapat menyebabkan replikasi gagal jika data dalam kolom FILESTREAM melebihi 2 GB dan ada konflik selama replikasi. Jika Anda mengharapkan situasi ini muncul, disarankan agar Anda menghilangkan dan membuat ulang artikel tabel dengan opsi skema FILESTREAM yang sesuai diaktifkan pada waktu pembuatan.

  • Replikasi penggabungan dapat menyinkronkan data FILESTREAM melalui koneksi HTTPS dengan menggunakan Sinkronisasi Web. Data ini tidak boleh melebihi batas 50 MB untuk Sinkronisasi Web; jika tidak, kesalahan run-time dihasilkan.

Pengiriman Log

Pengiriman log mendukung FILESTREAM. Server utama dan sekunder harus menjalankan SQL Server 2008 (10.0.x), atau versi yang lebih baru, dan mengaktifkan FILESTREAM.

Pencerminan Database

Pencerminan database tidak mendukung FILESTREAM. Grup file FILESTREAM tidak dapat dibuat pada server utama. Pencerminan database tidak dapat dikonfigurasi untuk database yang berisi grup file FILESTREAM.

Pengindeksan Teks Lengkap

Pengindeksan teks lengkap berfungsi dengan kolom FILESTREAM dengan cara yang sama seperti yang dilakukannya dengan kolom varbinary(maks). Tabel FILESTREAM harus memiliki kolom yang berisi ekstensi nama file untuk setiap BLOB FILESTREAM. Untuk informasi selengkapnya, lihat Kueri dengan Pencarian Teks Lengkap, Konfigurasikan dan Kelola Filter untuk Pencarian, dan sys.fulltext_document_types (Transact-SQL).

Mesin teks lengkap mengindeks konten BLOB FILESTREAM. Mengindeks file seperti gambar mungkin tidak berguna. Ketika BLOB FILESTREAM diperbarui, blob tersebut diindeks ulang.

Pengklusteran Failover

Untuk pengklusteran failover, grup file FILESTREAM harus diletakkan pada disk bersama. FILESTREAM harus diaktifkan pada setiap simpul dalam kluster yang akan menghosting instans FILESTREAM. Untuk informasi selengkapnya, lihat Menyiapkan FILESTREAM pada Kluster Failover.

SQL Server Express

SQL Server Express mendukung FILESTREAM. Batas ukuran database 10 GB tidak menyertakan kontainer data FILESTREAM.

Database Mandiri

Fitur FILESTREAM 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

Data Objek Besar Biner (Blob) (SQL Server)