Memuat file ke fileTables
Berlaku untuk: SQL Server
Menjelaskan cara memuat atau memigrasikan file ke FileTables.
Memuat atau memigrasikan file ke dalam FileTable
Metode yang Anda pilih untuk memuat atau memigrasikan file ke file FileTable bergantung pada tempat file saat ini disimpan.
Lokasi file saat ini | Opsi untuk migrasi |
---|---|
File saat ini disimpan dalam sistem file. SQL Server tidak memiliki pengetahuan tentang file. |
Karena FileTable muncul sebagai folder dalam sistem file Windows, Anda dapat dengan mudah memuat file ke FileTable baru dengan menggunakan salah satu metode yang tersedia untuk memindahkan atau menyalin file. Metode ini termasuk Windows Explorer, opsi baris perintah termasuk xcopy dan robocopy, dan skrip atau aplikasi kustom. Anda tidak dapat mengonversi folder yang sudah ada ke FileTable. |
File saat ini disimpan dalam sistem file. SQL Server berisi tabel metadata yang berisi penunjuk ke file. |
Langkah pertama adalah memindahkan atau menyalin file dengan menggunakan salah satu metode sebelumnya yang disebutkan. Langkah kedua adalah memperbarui tabel metadata yang ada untuk menunjuk ke lokasi baru file. Untuk informasi selengkapnya, lihat Contoh: Memigrasikan file dari sistem file ke dalam FileTable di artikel ini. |
Cara: Memuat file ke dalam FileTable
Anda bisa menggunakan metode berikut untuk memuat file ke dalam FileTable:
Seret dan letakkan file dari folder sumber ke folder FileTable baru di Windows Explorer.
Gunakan opsi baris perintah seperti
move
, ,copy
,xcopy
ataurobocopy
dari prompt perintah atau dalam file batch atau skrip.Tulis aplikasi kustom untuk memindahkan atau menyalin file di C# atau Visual Basic .NET. Metode panggilan dari
System.IO
namespace layanan.
Contoh: Memigrasikan file dari sistem file ke fileTable
Dalam skenario ini, file Anda disimpan dalam sistem file, dan Anda memiliki tabel metadata di SQL Server yang berisi pointer ke file. Anda ingin memindahkan file ke fileTable, lalu mengganti jalur UNC asli untuk setiap file dalam metadata dengan jalur UNC FileTable. Fungsi GetPathLocator membantu Anda mencapai tujuan ini.
Untuk contoh ini, asumsikan bahwa ada tabel database yang ada, PhotoMetadata
, yang berisi data tentang foto. Tabel ini memiliki kolom UNCPath
jenis varchar(512) yang berisi jalur UNC aktual .jpg
ke file.
Untuk memigrasikan file gambar dari sistem file ke fileTable, Anda harus melakukan hal-hal berikut:
Buat FileTable baru untuk menyimpan file. Contoh ini menggunakan nama tabel,
dbo.PhotoTable
, tetapi tidak memperlihatkan kode untuk membuat tabel.Gunakan xcopy atau alat serupa untuk menyalin
.jpg
file, dengan struktur direktorinya, ke direktori akar FileTable.Perbaiki metadata dalam
PhotoMetadata
tabel, dengan menggunakan kode yang mirip dengan contoh berikut:
-- Add a path locator column to the PhotoMetadata table.
ALTER TABLE PhotoMetadata ADD pathlocator HIERARCHYID;
-- Get the root path of the Photo directory on the File Server.
DECLARE @UNCPathRoot VARCHAR(100) = '\\RemoteShare\Photographs';
-- Get the root path of the FileTable.
DECLARE @FileTableRoot VARCHAR(1000);
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
-- Update the PhotoMetadata table.
-- Replace the File Server UNC path with the FileTable path.
UPDATE PhotoMetadata
SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.
UPDATE PhotoMetadata
SET pathlocator = GetPathLocator(UNCPath);
Memuat file secara massal ke dalam FileTable
FileTable berperilaku seperti tabel normal untuk operasi massal. FileTable memiliki batasan yang ditentukan sistem yang memastikan bahwa integritas namespace file dan direktori dipertahankan. Batasan ini harus diverifikasi pada data secara massal yang dimuat ke dalam FileTable. Karena beberapa operasi penyisipan massal memungkinkan batasan tabel diabaikan, persyaratan berikut diberlakukan.
Operasi pemuatan massal yang memberlakukan batasan dapat dijalankan terhadap FileTable seperti pada tabel lain. Kategori ini mencakup operasi berikut:
- bcp dengan
CHECK_CONSTRAINTS
klausul. BULK INSERT
denganCHECK_CONSTRAINTS
klausa.INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)
tanpaIGNORE_CONSTRAINTS
klausa.
- bcp dengan
Operasi pemuatan massal yang tidak memberlakukan batasan gagal kecuali batasan yang ditentukan sistem FileTable dinonaktifkan. Kategori ini mencakup operasi berikut:
- bcp tanpa
CHECK_CONSTRAINTS
klausul. BULK INSERT
tanpaCHECK_CONSTRAINTS
klausa.INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)
denganIGNORE_CONSTRAINTS
klausa.
- bcp tanpa
Cara: Memuat file secara massal ke dalam FileTable
Anda dapat menggunakan berbagai metode untuk memuat file secara massal ke dalam FileTable:
Hubungi dengan CHECK_CONSTRAINTS
klausul.
Nonaktifkan namespace fileTable dan panggilan tanpa CHECK_CONSTRAINTS
klausa. Kemudian aktifkan kembali namespace FileTable.
Untuk informasi tentang menonaktifkan batasan FileTable, lihat Mengelola FileTable.
Cara: Menonaktifkan batasan FileTable untuk pemuatan massal
Untuk memuat file secara massal ke fileTable tanpa overhead memberlakukan batasan yang ditentukan sistem, Anda dapat menonaktifkan batasan untuk sementara waktu. Untuk informasi selengkapnya, lihat Mengelola FileTables.