Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x) sur Linux
Important
Actuellement, cette fonctionnalité est uniquement disponible en tant que version préliminaire.
À compter de SQL Server 2025 (17.x) Mise à jour cumulative (CU) 3, vous pouvez utiliser le rôle serveur bulkadmin ou l’autorisation ADMINISTER BULK OPERATIONS d’effectuer des opérations d’importation de données en bloc sur SQL Server s’exécutant sur Linux. Auparavant, seuls les membres du rôle serveur sysadmin pouvaient exécuter BULK INSERT ou OPENROWSET(BULK...) sur Linux.
SQL Server sur Linux applique des vérifications supplémentaires de système de fichiers et de validation de chemin d’accès pour les opérations en bloc, au-delà de ce qui est requis sur Windows. Un administrateur doit :
- Accorder les autorisations SQL Server appropriées à l’utilisateur
- Accorder des autorisations de système de fichiers Linux sur les fichiers de données
- Approuver explicitement les chemins d’accès de répertoire à l’aide de
mssql-conf
Prerequisites
- SQL Server 2025 (17.x) CU 3 ou version ultérieure sur Linux
- Accès administratif à l’hôte Linux
- Accès administratif à l’instance SQL Server
Configurer le système de fichiers Linux
Avant de pouvoir exécuter des opérations d’importation en bloc, le mssql compte de service doit avoir accès en lecture aux fichiers de données sur le système de fichiers Linux.
Créez un répertoire pour vos fichiers de données en bloc :
mkdir -p /tmp/bulkload/sales/Créez un exemple de fichier de données :
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 EOFAccordez l’autorisation de lecture au compte de processus SQL Server (
mssql) sur le fichier de données :setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Configurer les chemins autorisés avec mssql-conf
Un administrateur doit approuver les répertoires à partir desquels les opérations en bloc peuvent lire, à l’aide du paramètre bulkadmin.allowedpathslist dans mssql-conf. Cette modification prend effet immédiatement et ne nécessite pas de redémarrage du service SQL Server.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Pour spécifier plusieurs répertoires, séparez chaque chemin d’accès par deux-points (:) :
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Vous pouvez également spécifier un répertoire parent pour autoriser tous les sous-répertoires qu'il contient.
Restrictions de chemin d’accès
Les restrictions suivantes s’appliquent aux chemins configurés pour les opérations en bloc :
- Le chemin doit être un chemin absolu. Chemins relatifs contenant
.ou..ne sont pas autorisés. - Le chemin racine (
/) n’est pas autorisé. - Le chemin d’accès ne doit pas dépasser 4 096 caractères.
- Le chemin d’accès ne doit pas contenir de caractères non valides (nul, nouvelle ligne, retour chariot ou tabulation).
- Les liens symboliques ne sont pas autorisés.
- Le chemin d’accès doit faire référence à un répertoire.
Chemins interdits
Le système bloque certains chemins critiques par conception. Vous ne pouvez pas utiliser ces emplacements comme chemins de fichier de données sources pour les opérations en bloc, même si vous les ajoutez à la liste des chemins d’accès autorisés :
-
/var/opt/mssql(ou le répertoire d’installation de SQL Server) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Les opérations en bloc qui lisent les données sources de ces chemins échouent pour des raisons de sécurité. Cette restriction ne s’applique pas au ERRORFILE chemin de sortie, qui utilise le répertoire de données SQL Server par défaut.
Configurer des autorisations SQL Server
Après avoir configuré le système de fichiers Linux et les chemins autorisés, configurez les autorisations SQL Server pour l’utilisateur qui effectue l’importation en bloc.
Connectez-vous à l’instance SQL Server et créez un exemple de base de données et de table :
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 ); GOCréez une connexion pour l’utilisateur d’importation en bloc :
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOAccordez l’autorisation ou ajoutez la
ADMINISTER BULK OPERATIONSconnexion au rôle serveur bulkadmin . Utilisez l’une des options suivantes :-- 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; GOCréez un utilisateur de base de données et accordez les autorisations de table nécessaires :
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Exécuter une importation en bloc
Connectez-vous à la base de données en utilisant le login BulkLoadUser et exécutez l’importation en bloc :
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
Les mêmes autorisations, la configuration du système de fichiers Linux et les étapes d’approbation de chemin d’accès s’appliquent aux INSERT ... SELECT * FROM OPENROWSET(BULK...) instructions. Pour plus d’informations, consultez Importer des données en bloc à l’aide de BULK INSERT ou OPENROWSET(BULK...).
Comportement de mise à niveau et de rétrogradation
À compter de SQL Server 2025 (17.x) CU 3, SQL Server sur Linux prend en charge les opérations en bloc à l’aide du rôle bulkadmin ou de l’autorisation ADMINISTER BULK OPERATIONS.
Si vous désinstallez CU 3 ou passez à une mise à jour cumulative antérieure :
- Les autorisations précédemment accordées restent attribuées, mais ne sont pas fonctionnelles.
- Les opérations en bloc nécessitent des autorisations sysadmin , comme dans les versions antérieures à CU 3.