Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Hozzon létre egy könyvtárat a tömeges adatfájlokhoz:
mkdir -p /tmp/bulkload/sales/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 EOFOlvasá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.
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 ); GOHozzon létre egy bejelentkezést a tömeges importálási felhasználóhoz:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOAdjon 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; GOHozzon 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.