Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2025 (17.x) op Linux
Belangrijk
Deze functie is momenteel beschikbaar als preview-versie.
Vanaf SQL Server 2025 (17.x) Cumulatieve update (CU) 3, kunt u de bulkadmin-serverfunctie of de ADMINISTER BULK OPERATIONS machtiging gebruiken om bulkbewerkingen voor gegevensimport uit te voeren op SQL Server die wordt uitgevoerd op Linux. Voorheen konden alleen leden van de sysadmin-serverfunctieBULK INSERT of OPENROWSET(BULK...) uitvoeren op Linux.
SQL Server op Linux dwingt extra bestandssysteem- en padvalidatiecontroles af voor bulkbewerkingen, behalve wat vereist is in Windows. Een beheerder moet:
- De juiste SQL Server-machtigingen verlenen aan de gebruiker
- Linux-bestandssysteemmachtigingen verlenen voor de gegevensbestanden
- Mappaden expliciet goedkeuren met behulp van
mssql-conf
Vereiste voorwaarden
- SQL Server 2025 (17.x) CU 3 of hoger op Linux
- Beheerderstoegang tot de Linux-host
- Beheerderstoegang tot het SQL Server-exemplaar
Het Linux-bestandssysteem configureren
Voordat u bulkimportbewerkingen kunt uitvoeren, moet het mssql serviceaccount leestoegang hebben tot de gegevensbestanden in het Linux-bestandssysteem.
Maak een map voor uw bulkgegevensbestanden:
mkdir -p /tmp/bulkload/sales/Een voorbeeldgegevensbestand maken:
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 EOFLeesmachtigingen verlenen aan het SQL Server-procesaccount (
mssql) in het gegevensbestand:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Toegestane paden configureren met mssql-conf
Een beheerder moet de mappen goedkeuren waarvandaan bulkbewerkingen kunnen worden uitgevoerd met behulp van de bulkadmin.allowedpathslist instelling in mssql-conf. Deze wijziging wordt onmiddellijk van kracht en vereist geen herstart van de SQL Server-service.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Als u meerdere mappen wilt opgeven, scheidt u elk pad met een dubbele punt (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
U kunt ook een bovenliggende directory opgeven om alle subdirectory's daaronder op te nemen.
Padbeperkingen
De volgende beperkingen gelden voor paden die zijn geconfigureerd voor bulkbewerkingen:
- Het pad moet een absoluut pad zijn. Relatieve paden met
.of..zijn niet toegestaan. - Het hoofdpad (
/) is niet toegestaan. - Het pad mag niet langer zijn dan 4.096 tekens.
- Het pad mag geen ongeldige tekens bevatten (null, nieuwe regel, wagen terug of tab).
- Symbolische koppelingen zijn niet toegestaan.
- Het pad moet verwijzen naar een map.
Verboden paden
Het systeem blokkeert per ontwerp enkele kritieke paden. U kunt deze locaties niet gebruiken als brongegevensbestandspaden voor bulkbewerkingen, zelfs niet als u ze toevoegt aan de lijst met toegestane paden:
-
/var/opt/mssql(of de SQL Server-installatiemap) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Bulkbewerkingen die brongegevens van deze paden lezen, mislukken om veiligheidsredenen. Deze beperking is niet van toepassing op het ERRORFILE uitvoerpad, dat standaard gebruikmaakt van de SQL Server-gegevensmap.
SQL Server-machtigingen instellen
Nadat u het Linux-bestandssysteem en toegestane paden hebt geconfigureerd, stelt u de SQL Server-machtigingen in voor de gebruiker die de bulkimport uitvoert.
Maak verbinding met het SQL Server-exemplaar en maak een voorbeelddatabase en -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 ); GOMaak een aanmelding voor de bulkimportgebruiker:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOVerleen de
ADMINISTER BULK OPERATIONStoestemming of voeg de login toe aan de serverfunctie bulkadmin. Gebruik een van de volgende opties:-- 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; GOMaak een databasegebruiker en verdeel de benodigde tabelmachtigingen:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Een bulkimport uitvoeren
Maak verbinding met de database als aanmelding BulkLoadUser en voer de bulkimport uit:
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
Dezelfde machtigingen, configuratie van Linux-bestandssysteem en stappen voor padgoedkeuring zijn van toepassing op INSERT ... SELECT * FROM OPENROWSET(BULK...) verklaringen. Zie Bulkgegevens importeren met BULK INSERT of OPENROWSET(BULK...)voor meer informatie.
Gedrag bijwerken en downgraden
Vanaf SQL Server 2025 (17.x) CU 3 ondersteunt SQL Server op Linux bulkbewerkingen met behulp van de bulkadmin-rol of ADMINISTER BULK OPERATIONS -machtiging.
Als u CU 3 verwijdert of downgradet naar een eerdere cumulatieve update:
- Eerder verleende machtigingen blijven toegewezen, maar zijn niet functioneel.
- Voor bulkbewerkingen zijn sysadmin-machtigingen vereist, zoals in versies vóór CU 3.