Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2025 (17.x) i Linux
Viktigt!
Den här funktionen är för närvarande i förhandsversion.
Från och med SQL Server 2025 (17.x) Kumulativ uppdatering (CU) 3 kan du använda bulkadmin-serverrollen eller behörigheten ADMINISTER BULK OPERATIONS att utföra massimportåtgärder för data på SQL Server som körs på Linux. Tidigare kunde endast medlemmar i sysadmin-serverrollen köra BULK INSERT eller OPENROWSET(BULK...) på Linux.
SQL Server i Linux tillämpar ytterligare valideringskontroller av filsystem och sökvägar för massåtgärder utöver vad som krävs i Windows. En administratör måste:
- Bevilja lämplig SQL Server-behörighet till användaren
- Bevilja Linux-filsystembehörigheter för datafilerna
- Godkänn uttryckligen katalogsökvägar med hjälp av
mssql-conf
Förutsättningar
- SQL Server 2025 (17.x) CU 3 eller senare version på Linux
- Administrativ åtkomst till Linux-värden
- Administrativ åtkomst till SQL Server-instansen
Konfigurera Linux-filsystemet
Innan du kan köra massimportåtgärder mssql måste tjänstkontot ha läsbehörighet till datafilerna i Linux-filsystemet.
Skapa en katalog för massdatafilerna:
mkdir -p /tmp/bulkload/sales/Skapa en exempeldatafil:
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 EOFBevilja läsbehörighet till SQL Server-processkontot (
mssql) för datafilen:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Konfigurera tillåtna sökvägar med mssql-conf
En administratör måste godkänna de kataloger som massåtgärder kan läsa från genom att använda inställningen bulkadmin.allowedpathslist i mssql-conf. Den här ändringen börjar gälla omedelbart och kräver ingen omstart av SQL Server-tjänsten.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Om du vill ange flera kataloger separerar du varje sökväg med ett kolon (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Du kan också ange en överordnad katalog som tillåter alla underkataloger under den.
Sökvägsbegränsningar
Följande begränsningar gäller för sökvägar som konfigurerats för massåtgärder:
- Sökvägen måste vara en absolut sökväg. Relativa sökvägar som innehåller
.eller..tillåts inte. - Rotsökvägen (
/) är inte tillåten. - Sökvägen får inte överstiga 4 096 tecken.
- Sökvägen får inte innehålla ogiltiga tecken (null, newline, vagnretur eller flik).
- Symboliska länkar tillåts inte.
- Sökvägen måste referera till en katalog.
Förbjudna vägar
Systemet blockerar vissa kritiska sökvägar avsiktligt. Du kan inte använda dessa platser som källdatafilsökvägar för massåtgärder, även om du lägger till dem i listan över tillåtna sökvägar:
-
/var/opt/mssql(eller installationskatalogen för SQL Server) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Massåtgärder som läser källdata från dessa sökvägar misslyckas av säkerhetsskäl. Den här begränsningen ERRORFILE gäller inte för utdatasökvägen, som använder SQL Server-datakatalogen som standard.
Konfigurera SQL Server-behörigheter
När du har konfigurerat Linux-filsystemet och tillåtna sökvägar konfigurerar du SQL Server-behörigheterna för den användare som utför massimporten.
Anslut till SQL Server-instansen och skapa en exempeldatabas och tabell:
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 ); GOSkapa en inloggning för massimportanvändaren:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOBevilja behörigheten
ADMINISTER BULK OPERATIONSeller lägg till inloggningen i bulkadmin-serverrollen . Använd något av följande alternativ:-- 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; GOSkapa en databasanvändare och bevilja nödvändiga tabellbehörigheter:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Utföra en massimport
Anslut till databasen med BulkLoadUser-kontot och kör bulkimporten:
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
Samma behörigheter, konfiguration av Linux-filsystem och steg för godkännande av sökväg gäller för INSERT ... SELECT * FROM OPENROWSET(BULK...) -instruktioner. Mer information finns i Importera massdata med hjälp av BULK INSERT eller OPENROWSET(BULK...).
Beteende vid uppgradering och nedgradering
Från och med SQL Server 2025 (17.x) CU 3 stöder SQL Server på Linux massåtgärder med bulkadmin-rollen eller ADMINISTER BULK OPERATIONS behörigheten.
Om du avinstallerar CU 3 eller nedgraderar till en tidigare kumulativ uppdatering:
- Tidigare beviljade behörigheter är fortfarande tilldelade men fungerar inte.
- Massåtgärder kräver sysadmin-behörigheter , som i versioner före CU 3.