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
Důležité
Tato funkce je aktuálně dostupná jako ukázková verze.
Od kumulativní aktualizace 24 (CU24) pro SQL Server 2022 (16.x) a kumulativní aktualizace 3 (CU3) pro SQL Server 2025 (17.x) můžete použít roli serveru bulkadmin nebo oprávnění ADMINISTER BULK OPERATIONS k provádění operací hromadného importu dat na SQL Serveru spuštěném na Linuxu. Dříve mohli v Linuxu spustit funkci BULK INSERT nebo OPENROWSET(BULK...) pouze členové role serveru sysadmin.
SQL Server v Linuxu vynucuje další kontroly systému souborů a ověřování cest pro hromadné operace nad rámec toho, co je požadováno ve Windows. 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ě schvalte cesty adresářů 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ů
Než budete moct spouštět operace hromadného importu, mssql musí mít účet služby přístup pro čtení k datovým souborům v systému souborů Linuxu.
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>'; GOADMINISTER BULK OPERATIONSUdělte oprávnění nebo přidejte přihlášení k roli 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 Import hromadných dat pomocí BULK INSERT nebo OPENROWSET(BULK...).
Chování aktualizace a degradace
Od SQL Serveru 2022 (16.x) CU24 a SQL Serveru 2025 (17.x) CU3 na Linuxu podporuje SQL Server hromadné operace pomocí role bulkadmin nebo oprávnění ADMINISTER BULK OPERATIONS.
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 ve verzích před těmito kumulativními aktualizacemi.