Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2025 (17.x) no Linux
Importante
Esta funcionalidade está atualmente em pré-visualização.
A partir do SQL Server 2025 (17.x) Cumulative Update (CU) 3, pode usar a função de servidor bulkadmin ou a ADMINISTER BULK OPERATIONS permissão para realizar operações de importação massiva de dados no SQL Server a correr no Linux. Anteriormente, apenas os membros do papel de servidor sysadmin podiam executar BULK INSERT ou OPENROWSET(BULK...) no Linux.
O SQL Server no Linux impõe verificações adicionais de validação do sistema de ficheiros e do caminho para operações em massa, para além do exigido no Windows. Um administrador deve:
- Conceda permissões SQL Server apropriadas ao utilizador
- Conceder permissões ao sistema de ficheiros Linux nos ficheiros de dados
- Aprove explicitamente os caminhos de diretórios usando
mssql-conf
Pré-requisitos
- SQL Server 2025 (17.x) versão CU 3 ou posterior no Linux
- Acesso administrativo ao host Linux
- Acesso administrativo à instância SQL Server
Configurar o sistema de ficheiros Linux
Antes de poderes executar operações de importação em massa, a mssql conta de serviço deve ter acesso de leitura aos ficheiros de dados no sistema de ficheiros Linux.
Crie um diretório para os seus ficheiros de dados em massa:
mkdir -p /tmp/bulkload/sales/Crie um ficheiro 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 EOFConceder permissão de leitura à conta do processo do SQL Server (
mssql) no ficheiro 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 a partir dos quais as operações em massa podem ler, utilizando a configuração bulkadmin.allowedpathslist em mssql-conf. Esta alteração entra em vigor imediatamente e não requer um reinício do serviço SQL Server.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Para especificar múltiplos diretórios, separe cada caminho com dois pontos (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Em alternativa, pode especificar um diretório pai para permitir todos os subdiretórios sob ele.
Restrições de percurso
As seguintes restrições aplicam-se a caminhos configurados para operações em massa:
- O caminho tem de ser um caminho absoluto. Caminhos relativos que contenham
.ou..não são permitidos. - O caminho da raiz (
/) não é permitido. - O percurso não pode exceder 4.096 caracteres.
- O caminho não deve conter caracteres inválidos (nulo, nova linha, retorno de carro ou tabulação).
- Links simbólicos não são permitidos.
- O caminho deve apontar para um diretório.
Caminhos proibidos
O sistema bloqueia alguns caminhos críticos por design. Não pode usar estas localizações como caminhos de ficheiros de origem para operações em massa, mesmo que as adicione à 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
Operações em massa que leem dados de origem destes caminhos falham por razões de segurança. Esta restrição não se aplica ao ERRORFILE caminho de saída, que utiliza o diretório de dados do SQL Server por defeito.
Configurar permissões do SQL Server
Depois de configurares o sistema de ficheiros Linux e os caminhos permitidos, configura as permissões do SQL Server para o utilizador que faz a importação em massa.
Ligue-se à instância do SQL Server e crie uma base de dados e 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 login para o utilizador 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 à função de servidor 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 utilizador de base de dados e conceda as permissões necessárias para a tabela:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Fazer uma importação em grande quantidade
Liga-te à base de dados como login BulkLoadUser e executa 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, configuração do sistema de ficheiros Linux e passos de aprovação de caminhos aplicam-se às INSERT ... SELECT * FROM OPENROWSET(BULK...) instruções. Para mais informações, veja Importar dados em massa usando BULK INSERT ou OPENROWSET(BULK...).
Comportamento de atualização e descida
A partir do SQL Server 2025 (17.x) CU 3, o SQL Server no Linux suporta operações em massa usando o papel bulkadmin ou a permissão ADMINISTER BULK OPERATIONS.
Se desinstalar o CU 3 ou reverter para uma atualização cumulativa anterior:
- Permissões anteriormente concedidas continuam atribuídas, mas não funcionam.
- Operações em massa requerem permissões de sysadmin, como nas versões anteriores ao CU 3.