Partilhar via


Configurar operações de importação em massa para SQL Server no Linux (pré-visualização)

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.

  1. Crie um diretório para os seus ficheiros de dados em massa:

    mkdir -p /tmp/bulkload/sales/
    
  2. 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
    EOF
    
  3. Conceder 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.

  1. 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
    );
    GO
    
  2. Crie um login para o utilizador de importação em massa:

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>';
    GO
    
  3. Conceda a ADMINISTER BULK OPERATIONS permissã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;
    GO
    
  4. Crie 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.