Megosztás a következőn keresztül:


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

Fontos

Ez a funkció jelenleg előzetes verzióban érhető el.

Az SQL Server 2022 (16.x) 24. kumulatív frissítésétől (CU24) és az SQL Server 2025 (17.x) 3. kumulatív frissítésétől (CU3) kezdve használhatja a bulkadmin kiszolgálói szerepkört vagy a ADMINISTER BULK OPERATIONS Linuxon futó SQL Server tömeges adatimportálási műveleteinek elvégzésére vonatkozó engedélyt. Korábban csak a sysadmin kiszolgálói szerepkör tagjai futtathatták a BULK INSERT vagy AZ OPENROWSET(BULK...) parancsot Linuxon.

A Linuxon futó SQL Server további fájlrendszer- és elérésiút-ellenőrzési ellenőrzéseket hajt végre a tömeges műveletek esetében, a Windowson megköveteltnél. A rendszergazdának:

  • Megfelelő SQL Server-engedélyek megadása a felhasználónak
  • Linux fájlrendszerbeli engedélyek megadása az adatfájlokhoz
  • A címtár elérési útjainak explicit jóváhagyása a következő használatával: mssql-conf

Előfeltételek

  • 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 importálási műveletek futtatása előtt a mssql 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 = '<strong_password>';
    GO
    
  3. Adjon engedélyt a ADMINISTER BULK OPERATIONS, vagy adja hozzá a bejelentkezést a bulkadmin kiszolgálói szerepkörhöz. 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ó: Tömeges adatok importálása TÖMEGES BESZÚRÁS vagy OPENROWSET(BULK...) használatával.

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

Az SQL Server 2022 (16.x) CU24 és AZ SQL Server 2025 (17.x) CU3 használatával kezdődően a Linuxon futó SQL Server támogatja a tömeges műveleteket a bulkadmin szerepkörrel vagy ADMINISTER BULK OPERATIONS engedélyekkel.

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 sysadmin-engedélyekre van szükség, mint a kumulatív frissítések előtti verziókban.