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
Počínaje kumulativní aktualizací 27 (CU27) pro SQL Server 2022 (16.x) a kumulativní aktualizací 9 (CU9) pro SQL Server 2025 (17.x) můžete k provádění operací hromadného importu dat v SQL Serveru spuštěném v systému Linux použít pevnou serverovou roli bulkadmin nebo oprávnění ADMINISTER BULK OPERATIONS. Dříve mohli pouze členové role správce pevného serveru spustit BULK INSERT nebo OPENROWSET(BULK...) na Linuxu.
SQL Server v systému Linux vynucuje pro hromadné operace dodatečné kontroly souborového systému a cest navíc oproti tomu, co vyžaduje systém 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ě schvalujte adresářové cesty pomocí
mssql-conf
Předpoklady
- SQL Server 2022 (16.x) CU 27 nebo novější verze na Linuxu, nebo SQL Server 2025 (17.x) CU 9 nebo novější verze na 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ž spustíte hromadné importní operace, mssql servisní účet vyžaduje 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 = '<password>'; GOUdělte oprávnění
ADMINISTER BULK OPERATIONSnebo přidejte přihlášení do pevné role 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
Pokud downgradujete na kumulativní aktualizaci dřívější než SQL Server 2022 (16.x) CU 24 nebo SQL Server 2025 (17.x) CU 3:
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 .