Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: SQL Server 2022 (16.x) a novější verze v Linuxu
Important
Tato funkce je aktuálně dostupná jako ukázková verze.
Od SQL Server 2022 (16.x) Cumulative Update 24 (CU24) a SQL Server 2025 (17.x) Cumulative Update 3 (CU3) můžete využít roli pevného serveru bulkadmin nebo oprávnění ADMINISTER BULK OPERATIONS k provádění hromadného importu dat na SQL Server běžícím na Linuxu. Dříve mohli pouze členové role správce pevného serveru spustit BULK INSERT nebo OPENROWSET(BULK...) na Linuxu.
SQL Server on Linux vynucuje další kontroly ověřování souborového systému a cesty pro hromadné operace, nad rámec toho, co Windows vyžaduje. Správce musí:
- Udělení odpovídajících oprávnění SQL Serveru uživateli
- Udělení oprávnění systému souborů Linuxu k datovým souborům
- Explicitně schvalujte adresářové cesty pomocí
mssql-conf
Předpoklady
- SQL Server 2022 (16.x) CU24 nebo novější verze v Linuxu nebo SQL Server 2025 (17.x) CU3 nebo novější verze v Linuxu
- Přístup pro správu k hostiteli s Linuxem
- Přístup pro správu k instanci SQL Serveru
Konfigurace linuxového systému souborů
Před spuštěním hromadného importu musí mít mssql servisní účet přístup ke čtení datových souborů v souborovém systému Linux.
Vytvořte adresář pro hromadné datové soubory:
mkdir -p /tmp/bulkload/sales/Vytvořte ukázkový datový soubor:
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 EOFUdělte oprávnění ke čtení účtu procesu SQL Serveru (
mssql) v datovém souboru:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Konfigurace povolených cest pomocí mssql-conf
Správce musí schvalovat adresáře, ze kterých mohou hromadné operace číst, a to pomocí nastavení bulkadmin.allowedpathslist v mssql-conf. Tato změna se projeví okamžitě a nevyžaduje restartování služby SQL Serveru.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Pokud chcete zadat více adresářů, oddělte každou cestu dvojtečku (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Případně můžete zadat nadřazený adresář, který umožní přístup pro všechny podadresáře.
Omezení cesty
Následující omezení platí pro cesty nakonfigurované pro hromadné operace:
- Cesta musí být absolutní cestou. Relativní cesty obsahující
.nebo..nejsou povoleny. - Kořenová cesta (
/) není povolená. - Cesta nesmí překročit 4 096 znaků.
- Cesta nesmí obsahovat neplatné znaky (null, nový řádek, návrat na začátek řádku nebo tabulátor).
- Symbolické odkazy nejsou povolené.
- Cesta musí odkazovat na adresář.
Zakázané cesty
Systém blokuje některé kritické cesty návrhem. Tato umístění nemůžete použít jako zdrojové cesty k datovým souborům pro hromadné operace, i když je přidáte do seznamu povolených cest:
-
/var/opt/mssql(nebo instalační adresář SQL Serveru) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Hromadné operace, které čtou zdrojová data z těchto cest, selžou z bezpečnostních důvodů. Toto omezení se nevztahuje na ERRORFILE výstupní cestu, která ve výchozím nastavení používá datový adresář SQL Serveru.
Nastavení oprávnění SQL Serveru
Po nakonfigurování systému souborů Linuxu a povolených cest nastavte oprávnění SQL Serveru pro uživatele, který provádí hromadný import.
Připojte se k instanci SQL Serveru a vytvořte ukázkovou databázi a tabulku:
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 ); GOVytvořte přihlášení pro uživatele hromadného importu:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOUdělit oprávnění
ADMINISTER BULK OPERATIONSnebo přidat přihlášení do role pevného serveru bulkadmin . Použijte jednu z následujících možností:-- 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; GOVytvořte uživatele databáze a udělte potřebná oprávnění k tabulce:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Spuštění hromadného importu
Připojte se k databázi jako přihlašovací identita BulkLoadUser a spusťte hromadný import.
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
Stejná oprávnění, konfigurace systému souborů Linux a postup schválení cesty platí pro INSERT ... SELECT * FROM OPENROWSET(BULK...) příkazy. Další informace naleznete v tématu Použití BULK INSERT nebo OPENROWSET(BULK...) k importu dat do SQL Server.
Chování aktualizace a degradace
Začínaje SQL Server 2022 (16.x) CU24 a SQL Server 2025 (17.x) CU3, SQL Server on Linux podporuje hromadné operace pomocí role ADMINISTER BULK OPERATIONS nebo oprávnění pevného serveru bulkadmin.
Pokud přejdete na kumulativní aktualizaci starší než SQL Server 2022 (16.x) CU24 nebo SQL Server 2025 (17.x) CU3:
- Dříve udělená oprávnění zůstávají přiřazená, ale nejsou funkční.
- Hromadné operace vyžadují oprávnění správce systému , stejně jako verze před těmito kumulativními aktualizacemi.