Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: SQL Server 2022 (16.x) y versiones posteriores en Linux
Importante
Esta funcionalidad actualmente está en su versión preliminar.
A partir de SQL Server 2022 (16.x) Cumulative Update 24 (CU24) y SQL Server 2025 (17.x) Cumulative Update 3 (CU3), puedes utilizar el rol de servidor fijo de bulkadmin o el ADMINISTER BULK OPERATIONS permiso para realizar operaciones de importación masiva de datos en SQL Server que se ejecute en Linux. Anteriormente, solo los miembros del rol fijo de servidor sysadmin podían ejecutar BULK INSERT o OPENROWSET(BULK...) en Linux.
SQL Server en Linux impone comprobaciones adicionales de validación del sistema de archivos y de rutas para operaciones masivas, más allá de lo que Windows requiere. Un administrador debe:
- Concesión de permisos adecuados de SQL Server al usuario
- Concesión de permisos del sistema de archivos de Linux en los archivos de datos
- Aprobar explícitamente rutas de directorio con
mssql-conf
Prerequisites
- SQL Server 2022 (16.x) CU24 o una versión posterior en Linux, o SQL Server 2025 (17.x) CU3 o posterior en Linux
- Acceso administrativo al host de Linux
- Acceso administrativo a la instancia de SQL Server
Configuración del sistema de archivos de Linux
Antes de ejecutar operaciones de importación masiva, la cuenta de servicio mssql debe tener acceso de lectura a los archivos de datos en el sistema de archivos de Linux.
Cree un directorio para los archivos de datos masivos:
mkdir -p /tmp/bulkload/sales/Cree un archivo de datos de ejemplo:
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 EOFConceda permiso de lectura a la cuenta de proceso de SQL Server (
mssql) en el archivo de datos:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Configuración de rutas de acceso permitidas con mssql-conf
Un administrador debe aprobar los directorios desde los que las operaciones masivas pueden leer, mediante la configuración bulkadmin.allowedpathslist en mssql-conf. Este cambio surte efecto inmediatamente y no requiere un reinicio del servicio SQL Server.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Para especificar varios directorios, separe cada ruta de acceso con dos puntos (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Como alternativa, puede especificar un directorio primario para permitir todos los subdirectorios en él.
Restricciones de ruta
Las restricciones siguientes se aplican a las rutas de acceso configuradas para las operaciones masivas:
- La ruta de acceso debe ser una ruta de acceso absoluta. No se permiten rutas de acceso relativas que contengan
.o... - La ruta raíz (
/) no está permitida. - La ruta de acceso no debe superar los 4096 caracteres.
- La ruta no debe contener caracteres no válidos (nulo, salto de línea, retorno de carro o tabulación).
- No se permiten vínculos simbólicos.
- La ruta de acceso debe hacer referencia a un directorio.
Rutas de acceso prohibidas
El sistema bloquea algunas rutas críticas por diseño. No puede usar estas ubicaciones como rutas de acceso del archivo de datos de origen para operaciones masivas, aunque las agregue a la lista de rutas de acceso permitidas:
-
/var/opt/mssql(o el directorio de instalación de SQL Server) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Las operaciones masivas que leen datos de origen desde estas trayectorias fallan por motivos de seguridad. Esta restricción no se aplica a la ERRORFILE ruta de acceso de salida, que usa el directorio de datos de SQL Server de forma predeterminada.
Configuración de permisos de SQL Server
Después de configurar el sistema de archivos de Linux y las rutas de acceso permitidas, configure los permisos de SQL Server para el usuario que realiza la importación masiva.
Conéctese a la instancia de SQL Server y cree una base de datos y una tabla de ejemplo:
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 ); GOCree un inicio de sesión para el usuario de importación masiva:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOConcede el
ADMINISTER BULK OPERATIONSpermiso o añade el inicio de sesión al rol de servidor fijo de bulkadmin . Use una de las siguientes opciones:-- 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; GOCree un usuario de base de datos y conceda los permisos de tabla necesarios:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Ejecución de una importación masiva
Conéctese a la base de datos utilizando el inicio de sesión BulkLoadUser y ejecute la importación masiva de datos:
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
Los mismos permisos, configuración del sistema de archivos Linux y los pasos de aprobación de rutas se aplican a las INSERT ... SELECT * FROM OPENROWSET(BULK...) declaraciones. Para obtener más información, consulte Usar BULK INSERT o OPENROWSET(BULK...) para importar datos a SQL Server.
Comportamiento de actualización y degradación
A partir de SQL Server 2022 (16.x) CU24 y SQL Server 2025 (17.x) CU3, SQL Server en Linux soporta operaciones masivas utilizando el rol fijo de servidor bulkadmin o ADMINISTER BULK OPERATIONS permisos.
Si cambia a una actualización acumulativa anterior a SQL Server 2022 (16.x) CU24 o SQL Server 2025 (17.x) CU3:
- Los permisos concedidos anteriormente permanecen asignados, pero no son funcionales.
- Las operaciones masivas requieren permisos de administrador de sistemas , como en versiones anteriores a estas actualizaciones acumulativas.