Dela via


Konfigurera massimportåtgärder för SQL Server i Linux (förhandsversion)

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.

  1. Skapa en katalog för massdatafilerna:

    mkdir -p /tmp/bulkload/sales/
    
  2. 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
    EOF
    
  3. Bevilja 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.

  1. 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
    );
    GO
    
  2. Skapa en inloggning för massimportanvändaren:

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>';
    GO
    
  3. Bevilja behörigheten ADMINISTER BULK OPERATIONS eller 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;
    GO
    
  4. Skapa 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.