Tömeges importálási műveletek konfigurálása Linuxon futó SQL Serverhez (előzetes verzió)

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók Linuxon

Important

Ez a szolgáltatás jelenleg előzetes kiadásban elérhető.

Az SQL Server 2022 (16.x) Cumulative Update 24 (CU24) és az SQL Server 2025 (17.x) Cumulative Update 3 (CU3) használatával használhatod a bulkadmin fix szerver szerepét vagy az ADMINISTER BULK OPERATIONS engedélyt a Linuxon futó SQL Server-en végzett tömeges adatimporti műveletek végrehajtására. Korábban csak a rendszergazdálkodó fix szerver tagjai futtathattak BULK INSERT vagy OPENROWSET (BULK...) Linuxon.

Az SQL Server on Linux további fájlrendszer- és útellenőrzési ellenőrzéseket hajt végre tömeges műveletekre, túlmutatva a Windows követelményein. A rendszergazdának:

  • Megfelelő SQL Server-engedélyek megadása a felhasználónak
  • Linux fájlrendszerbeli engedélyek megadása az adatfájlokhoz
  • Kifejezetten jóváhagyja a könyvtár útvonalakat mssql-conf

Prerequisites

  • SQL Server 2022 (16.x) CU24 vagy újabb verzió Linuxon, vagy SQL Server 2025 (17.x) CU3 vagy újabb verzió Linuxon
  • Rendszergazdai hozzáférés a Linux-gazdagéphez
  • Rendszergazdai hozzáférés az SQL Server-példányhoz

A Linux fájlrendszer konfigurálása

A tömeges importműveletek mssql előtt a szolgáltatásfióknak olvasási hozzáféréssel kell rendelkeznie a Linux fájlrendszer adatfájljaihoz.

  1. Hozzon létre egy könyvtárat a tömeges adatfájlokhoz:

    mkdir -p /tmp/bulkload/sales/
    
  2. Mintaadatfájl létrehozása:

    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. Olvasási engedély megadása az SQL Server-folyamatfiókhoz (mssql) az adatfájlban:

    setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
    

Engedélyezett útvonalak konfigurálása mssql-conf használatával

A rendszergazdának jóvá kell hagynia azokat a könyvtárakat, amelyekből tömeges műveletek olvashatók, a bulkadmin.allowedpathslist beállítást használva a mssql-conf-ban. Ez a módosítás azonnal érvénybe lép, és nem igényel SQL Server-szolgáltatás újraindítását.

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"

Több könyvtár megadásához különítse el az egyes elérési utakat kettősponttal (:):

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"

Másik lehetőségként megadhat egy szülőkönyvtárat, amely lehetővé teszi az összes alkönyvtárat alatta.

Útvonalkorlátozások

A tömeges műveletekhez konfigurált útvonalakra a következő korlátozások vonatkoznak:

  • Az elérési útnak abszolút útnak kell lennie. Relatív elérési utak, amelyek . tartalmazzák vagy .. nem engedélyezettek.
  • A gyökér elérési útja (/) nem engedélyezett.
  • Az elérési út nem haladhatja meg a 4096 karaktert.
  • Az elérési út nem tartalmazhat érvénytelen karaktereket (null, új vonal, kocsivissza vagy lap).
  • A szimbolikus hivatkozások nem engedélyezettek.
  • Az elérési útnak egy könyvtárra kell hivatkoznia.

Tiltott útvonalak

A rendszer terv szerint blokkolja a kritikus útvonalakat. Ezeket a helyeket nem használhatja forrásadatfájl-elérési utakként tömeges műveletekhez, még akkor sem, ha hozzáadja őket az engedélyezett elérési utak listájához:

  • /var/opt/mssql (vagy az SQL Server telepítési könyvtára)
  • /var/opt/azcmagent/certs
  • /var/opt/azcmagent/tokens

A forrásadatokat ezekből az útvonalakból beolvasó tömeges műveletek biztonsági okokból meghiúsulnak. Ez a korlátozás nem vonatkozik a ERRORFILE kimeneti útvonalra, amely alapértelmezés szerint az SQL Server adatkönyvtárát használja.

SQL Server-engedélyek beállítása

Miután konfigurálta a Linux fájlrendszert és engedélyezte az elérési utakat, állítsa be az SQL Server-engedélyeket a tömeges importálást végrehajtó felhasználó számára.

  1. Csatlakozzon az SQL Server-példányhoz, és hozzon létre egy mintaadatbázist és egy táblát:

    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. Hozzon létre egy bejelentkezést a tömeges importálási felhasználóhoz:

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser
    WITH PASSWORD = '<password>';
    GO
    
  3. Add meg az ADMINISTER BULK OPERATIONS engedélyt, vagy add hozzá a bejelentkezést a bulkadmin fix szerver szerepéhez. Használja az alábbi lehetőségek egyikét:

    -- 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. Hozzon létre egy adatbázis-felhasználót, és adja meg a szükséges táblaengedélyeket:

    USE demodbforbulkinsert;
    GO
    
    CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser;
    GO
    
    GRANT INSERT, SELECT
        ON dbo.Sales TO BulkLoadUser;
    GO
    

Tömeges importálás végrehajtása

Csatlakozzon az adatbázishoz a(z) BulkLoadUser felhasználóval, majd futtassa a tömeges importálást.

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

Ugyanezek az engedélyek, a Linux fájlrendszer konfigurációja és az elérési út jóváhagyási lépései érvényesek az utasításokra INSERT ... SELECT * FROM OPENROWSET(BULK...) . További információért lásd: A BULK INSERT vagy az OPENROWSET(BULK...) használata adatok SQL Serverbe történő importálásához.

Frissítési és visszaminősítési viselkedés

Az SQL Server 2022 (16.x) CU24-től és az SQL Server 2025 (17.x) CU3-tól kezdve az SQL Server on Linux támogatja a bulkadmin fix szerver szerepét vagy ADMINISTER BULK OPERATIONS jogosultságát használó tömeges műveleteket.

Ha az SQL Server 2022 (16.x) CU24 vagy az SQL Server 2025 (17.x) CU3-nál korábbi kumulatív frissítésre vált:

  • A korábban megadott engedélyek továbbra is hozzárendelve maradnak, de nem működnek.
  • A tömeges műveletekhez rendszergazmos jogosultságok szükségesek, azaz a korábbi verziókban, amelyek ezeket az összesített frissítéseket megelőző verziók.