Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores no Linux
Importante
Esse recurso está atualmente em versão prévia.
A partir do SQL Server 2022 (16.x) Cumulative Update 24 (CU24) e SQL Server 2025 (17.x) Cumulative Update 3 (CU3), você pode usar o papel fixo de servidor bulkadmin ou a ADMINISTER BULK OPERATIONS permissão para realizar operações de importação de dados em massa no SQL Server rodando no Linux. Anteriormente, apenas membros do papel fixo de servidor sysadmin podiam rodar BULK INSERT ou OPENROWSET(BULK...) no Linux.
O SQL Server em Linux impõe verificações adicionais de validação de sistemas de arquivos e caminhos para operações em massa, além do que o Windows exige. Um administrador deve:
- Conceder permissões apropriadas do SQL Server ao usuário
- Conceder permissões do sistema de arquivos linux nos arquivos de dados
- Aprove explicitamente caminhos de diretório com
mssql-conf
Pré-requisitos
- SQL Server 2022 (16.x) CU24 ou versão posterior no Linux ou SQL Server 2025 (17.x) CU3 ou versão posterior no Linux
- Acesso administrativo ao host do Linux
- Acesso administrativo à instância do SQL Server
Configurar o sistema de arquivos do Linux
Antes de executar operações de importação em massa, a mssql conta de serviço deve ter acesso de leitura aos arquivos de dados no sistema de arquivos Linux.
Crie um diretório para seus arquivos de dados em massa:
mkdir -p /tmp/bulkload/sales/Crie um arquivo de dados de exemplo:
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 permissão de leitura à conta de processo do SQL Server (
mssql) no arquivo de dados:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
Configurar caminhos permitidos com mssql-conf
Um administrador deve aprovar os diretórios dos quais as operações em lote podem ler, utilizando a configuração bulkadmin.allowedpathslist em mssql-conf. Essa alteração entra em vigor imediatamente e não requer uma reinicialização de serviço do SQL Server.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Para especificar vários diretórios, separe cada caminho com dois-pontos (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Como alternativa, você pode especificar um diretório pai para permitir todos os subdiretórios sob ele.
Restrições de caminho
As seguintes restrições se aplicam aos caminhos configurados para operações em massa:
- O caminho deve ser um caminho absoluto. Caminhos relativos que contêm
.ou..não são permitidos. - O caminho raiz (
/) não é permitido. - O caminho não deve exceder 4.096 caracteres.
- O caminho não deve conter caracteres inválidos (nulo, nova linha, retorno de carro ou guia).
- Links simbólicos não são permitidos.
- O caminho deve se referir a um diretório.
Caminhos proibidos
O sistema bloqueia alguns caminhos críticos por design. Você não pode usar esses locais como caminhos de arquivo de dados de origem para operações em massa, mesmo se adicioná-los à lista de caminhos permitidos:
-
/var/opt/mssql(ou o diretório de instalação do SQL Server) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
As operações em massa que leem dados de origem desses caminhos falham por motivos de segurança. Essa restrição não se aplica ao ERRORFILE caminho de saída, que usa o diretório de dados do SQL Server por padrão.
Configurar permissões do SQL Server
Depois de configurar o sistema de arquivos linux e os caminhos permitidos, configure as permissões do SQL Server para o usuário que executa a importação em massa.
Conecte-se à instância do SQL Server e crie um banco de dados e uma tabela de exemplo:
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 ); GOCrie um logon para o usuário de importação em massa:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOConceda a
ADMINISTER BULK OPERATIONSpermissão ou adicione o login ao papel fixo de servidor de bulkadmin . Use uma das seguintes opções:-- 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; GOCrie um usuário de banco de dados e conceda as permissões de tabela necessárias:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Executar uma importação em massa
Conecte-se ao banco de dados como logon BulkLoadUser e execute a importação em massa:
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
As mesmas permissões, a configuração do sistema de arquivos do Linux e as etapas de aprovação de caminhos se aplicam às instruções INSERT ... SELECT * FROM OPENROWSET(BULK...). Para obter mais informações, consulte Use BULK INSERT ou OPENROWSET(BULK...) para importar dados para SQL Server.
Comportamento de upgrade e downgrade
A partir do SQL Server 2022 (16.x) CU24 e SQL Server 2025 (17.x) CU3, o SQL Server em Linux suporta operações em massa usando o papel fixo de servidor ou ADMINISTER BULK OPERATIONS permissão do bulkadmin.
Se você fizer downgrade para uma atualização cumulativa anterior ao SQL Server 2022 (16.x) CU24 ou SQL Server 2025 (17.x) CU3:
- As permissões concedidas anteriormente permanecem atribuídas, mas não estão funcionais.
- Operações em massa exigem permissões de administrador de sistemas , como nas versões anteriores a essas atualizações cumulativas.