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 2025 (17.x) di Linux
Penting
Fitur ini masih dalam mode pratinjau.
Dimulai dengan SQL Server 2025 (17.x) Pembaruan Kumulatif (CU) 3, Anda dapat menggunakan peran server bulkadmin atau ADMINISTER BULK OPERATIONS izin untuk melakukan operasi impor data massal di SQL Server yang berjalan di Linux. Sebelumnya, hanya anggota peran server sysadmin yang dapat menjalankan BULK INSERT atau OPENROWSET(BULK...) di Linux.
SQL Server di Linux memberlakukan sistem file tambahan dan pemeriksaan validasi jalur untuk operasi massal, di luar apa yang diperlukan di Windows. Administrator harus:
- Memberikan izin SQL Server yang sesuai kepada pengguna
- Memberikan izin sistem file Linux pada file data
- Menyetujui jalur direktori secara eksplisit menggunakan
mssql-conf
Prasyarat
- SQL Server 2025 (17.x) CU 3 atau versi yang lebih baru di Linux
- Akses administratif ke host Linux
- Akses administratif ke instans SQL Server
Mengonfigurasi sistem file Linux
Sebelum Anda dapat menjalankan operasi impor massal, mssql akun layanan harus memiliki akses baca ke file data pada sistem file Linux.
Buat direktori untuk file data massal Anda:
mkdir -p /tmp/bulkload/sales/Buat file data sampel:
cat > /tmp/bulkload/sales/loadsalesdata.csv << EOF Id,CustomerName,OrderDate,Amount 1,John Doe,2026-02-01,500.75 2,Jane Smith,2026-02-05,1500.20 3,Mark Lee,2026-02-10,320.50 4,Alice Johnson,2026-02-15,785.00 5,Bob Brown,2026-02-20,930.40 EOFBerikan izin baca ke akun proses SQL Server (
mssql) pada file data:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Mengonfigurasi jalur yang diizinkan dengan mssql-conf
Administrator harus menyetujui direktori tempat operasi massal dapat membaca, menggunakan bulkadmin.allowedpathslist pengaturan di mssql-conf. Perubahan ini segera berlaku dan tidak memerlukan mulai ulang layanan SQL Server.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Untuk menentukan beberapa direktori, pisahkan setiap jalur dengan titik dua (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Atau, Anda dapat menentukan direktori induk untuk mengizinkan semua subdirektori di bawahnya.
Pembatasan jalur
Pembatasan berikut berlaku untuk jalur yang dikonfigurasi untuk operasi massal:
- Jalur harus merupakan jalur absolut. Jalur relatif yang berisi
.atau..tidak diizinkan. - Jalur akar (
/) tidak diizinkan. - Jalur tidak boleh melebihi 4.096 karakter.
- Jalur tidak boleh berisi karakter yang tidak valid (null, newline, carriage return, atau tab).
- Tautan simbolis tidak diizinkan.
- Jalur harus merujuk ke direktori.
Jalur terlarang
Sistem memblokir beberapa jalur penting berdasarkan desain. Anda tidak dapat menggunakan lokasi ini sebagai jalur file data sumber untuk operasi massal, bahkan jika Anda menambahkannya ke daftar jalur yang diizinkan:
-
/var/opt/mssql(atau direktori penginstalan SQL Server) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Operasi massal yang membaca data sumber dari jalur ini gagal karena alasan keamanan. Pembatasan ini tidak berlaku untuk ERRORFILE jalur output, yang menggunakan direktori data SQL Server secara default.
Menyiapkan izin SQL Server
Setelah Anda mengonfigurasi sistem file Linux dan jalur yang diizinkan, siapkan izin SQL Server untuk pengguna yang melakukan impor massal.
Sambungkan ke instans SQL Server dan buat contoh database dan tabel:
CREATE DATABASE demodbforbulkinsert; GO USE demodbforbulkinsert; GO CREATE TABLE dbo.Sales ( Id INT NOT NULL PRIMARY KEY, CustomerName NVARCHAR(200) NOT NULL, OrderDate DATE NOT NULL, Amount DECIMAL(18, 2) NOT NULL ); GOBuat login untuk pengguna impor massal:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOADMINISTER BULK OPERATIONSBerikan izin atau tambahkan login ke peran server bulkadmin. Gunakan salah satu opsi berikut:-- Option 1: Add to the bulkadmin server role ALTER SERVER ROLE bulkadmin ADD MEMBER BulkLoadUser; GO-- Option 2: Grant the permission directly GRANT ADMINISTER BULK OPERATIONS TO BulkLoadUser; GOBuat pengguna database dan berikan izin tabel yang diperlukan:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Menjalankan impor massal
Sambungkan ke database menggunakan kredensial BulkLoadUser dan jalankan impor massal.
USE demodbforbulkinsert;
GO
BULK INSERT dbo.Sales
FROM '/tmp/bulkload/sales/loadsalesdata.csv'
WITH (
FIRSTROW = 2,
FIELDTERMINATOR = ',',
ERRORFILE = '/var/opt/mssql/data/bulk_errors'
);
GO
-- Verify the imported data
SELECT * FROM dbo.Sales;
GO
Izin yang sama, konfigurasi sistem file Linux, dan langkah-langkah persetujuan jalur berlaku untuk pernyataan INSERT ... SELECT * FROM OPENROWSET(BULK...). Untuk informasi selengkapnya, lihat Mengimpor data massal dengan menggunakan BULK INSERT atau OPENROWSET(BULK...).
Perilaku peningkatan dan penurunan
Dimulai dengan SQL Server 2025 (17.x) CU 3, SQL Server di Linux mendukung operasi massal menggunakan peran bulkadmin atau izin ADMINISTER BULK OPERATIONS.
Jika Anda menghapus instalan CU 3 atau mengembalikan ke pembaruan kumulatif sebelumnya:
- Izin yang diberikan sebelumnya tetap ada, namun tidak berfungsi.
- Operasi massal memerlukan izin sysadmin , seperti dalam versi sebelum CU 3.