Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2022 (16.x) und höhere Versionen unter Linux
Important
Diese Funktion steht derzeit als Vorschau zur Verfügung.
Ab SQL Server 2022 (16.x) Cumulative Update 24 (CU24) und SQL Server 2025 (17.x) Cumulative Update 3 (CU3) kannst du die Bulkadmin-Fixed-Server-Rolle oder die Berechtigung ADMINISTER BULK OPERATIONS nutzen, um Massendatenimportoperationen auf SQL Server unter Linux durchzuführen. Früher konnten nur Mitglieder der Sysadmin-Fixed-Server-Rolle auf Linux ausführen oder OPENROWSET(BULK...) ausführen.BULK INSERT
SQL Server für Linux erzwingt zusätzliche Dateisystem- und Pfadvalidierungsprüfungen für Massenoperationen, über das hinaus, was Windows verlangt. Ein Administrator muss:
- Erteilen geeigneter SQL Server-Berechtigungen für den Benutzer
- Erteilen von Linux-Dateisystemberechtigungen für die Datendateien
- Explizit Verzeichnispfade genehmigen mit
mssql-conf
Voraussetzungen
- SQL Server 2022 (16.x) CU24 oder höher unter Linux oder SQL Server 2025 (17.x) CU3 oder höher unter Linux
- Administrativer Zugriff auf den Linux-Host
- Administrativer Zugriff auf die SQL Server-Instanz
Konfigurieren des Linux-Dateisystems
Bevor Sie Massenimportoperationen ausführen, muss das mssql Servicekonto Lesezugriff auf die Datendateien im Linux-Dateisystem haben.
Erstellen Sie ein Verzeichnis für Ihre Massendatendateien:
mkdir -p /tmp/bulkload/sales/Erstellen einer Beispieldatendatei:
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 EOFErteilen Sie leseberechtigungen für das SQL Server-Prozesskonto (
mssql) in der Datendatei:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Konfigurieren zulässiger Pfade mit mssql-conf
Ein Administrator muss die Verzeichnisse genehmigen, aus denen Massenvorgänge gelesen werden können, mithilfe der bulkadmin.allowedpathslist-Einstellung in mssql-conf. Diese Änderung wird sofort wirksam und erfordert keinen NEUSTART des SQL Server-Diensts.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Um mehrere Verzeichnisse anzugeben, trennen Sie jeden Pfad durch einen Doppelpunkt (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Alternativ können Sie ein übergeordnetes Verzeichnis angeben, um alle Unterverzeichnisse zuzulassen.
Pfadeinschränkungen
Die folgenden Einschränkungen gelten für Pfade, die für Massenvorgänge konfiguriert sind:
- Der Pfad muss ein absoluter Pfad sein. Die Verwendung relativer Pfade, die
.oder..enthalten, ist nicht zulässig. - Der Stammpfad (
/) ist nicht zulässig. - Der Pfad darf 4.096 Zeichen nicht überschreiten.
- Der Pfad darf keine ungültigen Zeichen (NULL, Zeilenumbruch, Wagenrücklauf oder Tabstopp) enthalten.
- Symbolische Verknüpfungen sind nicht zulässig.
- Der Pfad muss auf ein Verzeichnis verweisen.
Verbotene Pfade
Das System blockiert einige kritische Pfade nach Entwurf. Sie können diese Speicherorte nicht als Quelldatendateipfade für Massenvorgänge verwenden, auch wenn Sie sie zur Liste zulässiger Pfade hinzufügen:
-
/var/opt/mssql(oder das SQL Server-Installationsverzeichnis) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Massenvorgänge, die Quelldaten aus diesen Pfaden lesen, schlagen aus Sicherheitsgründen fehl. Diese Einschränkung gilt nicht für den ERRORFILE Ausgabepfad, der standardmäßig das SQL Server-Datenverzeichnis verwendet.
Einrichten von SQL Server-Berechtigungen
Nachdem Sie das Linux-Dateisystem und zulässige Pfade konfiguriert haben, richten Sie die SQL Server-Berechtigungen für den Benutzer ein, der den Massenimport durchführt.
Stellen Sie eine Verbindung mit der SQL Server-Instanz her, und erstellen Sie eine Beispieldatenbank und -tabelle:
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 ); GOErstellen Sie eine Anmeldung für den Massenimportbenutzer:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOErteile die
ADMINISTER BULK OPERATIONSBerechtigung oder füge den Login zur Bulkadmin-Fixed-Server-Rolle hinzu. Verwenden Sie eine der folgenden Optionen:-- 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; GOErstellen Sie einen Datenbankbenutzer, und erteilen Sie die erforderlichen Tabellenberechtigungen:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Ausführen eines Massenimports
Stellen Sie als BulkLoadUser Login eine Verbindung mit der Datenbank her, und führen Sie den Massenimport aus:
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
Dieselben Berechtigungen, Linux-Dateisystemkonfiguration und Pfadgenehmigungsschritte gelten für INSERT ... SELECT * FROM OPENROWSET(BULK...) Anweisungen. Weitere Informationen finden Sie unter Verwenden BULK INSERT oder OPENROWSET(BULK...), um Daten in SQL Server zu importieren.
Upgrade- und Downgradeverhalten
Ab SQL Server 2022 (16.x) CU24 und SQL Server 2025 (17.x) CU3 unterstützt SQL Server für Linux Massenoperationen unter Verwendung der Bulkadmin-Fixed-Server-Rolle oder ADMINISTER BULK OPERATIONS -Berechtigung.
Wenn Sie ein Upgrade auf ein kumulatives Update vor SQL Server 2022 (16.x) CU24 oder SQL Server 2025 (17.x) CU3 ausführen:
- Zuvor erteilte Berechtigungen bleiben zugewiesen, funktionieren aber nicht.
- Massenoperationen erfordern Systemadministrator-Berechtigungen , wie in Versionen vor diesen kumulativen Updates.