Bagikan melalui


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, xcopyatau robocopy 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:

  1. Buat FileTable baru untuk menyimpan file. Contoh ini menggunakan nama tabel, dbo.PhotoTable, tetapi tidak memperlihatkan kode untuk membuat tabel.

  2. Gunakan xcopy atau alat serupa untuk menyalin .jpg file, dengan struktur direktorinya, ke direktori akar FileTable.

  3. 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 dengan CHECK_CONSTRAINTS klausa.
    • INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) tanpa IGNORE_CONSTRAINTS klausa.
  • 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 tanpa CHECK_CONSTRAINTS klausa.
    • INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...) dengan IGNORE_CONSTRAINTS klausa.

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.