Condividi tramite


Configurare le operazioni di importazione bulk per SQL Server in Linux (anteprima)

Si applica a: SQL Server 2025 (17.x) su Linux

Importante

Questa funzionalità è attualmente disponibile solo in anteprima.

A partire da SQL Server 2025 (17.x) Aggiornamento cumulativo (CU) 3, è possibile usare il ruolo del server bulkadmin o l'autorizzazione ADMINISTER BULK OPERATIONS per eseguire operazioni di importazione dei dati in blocco in SQL Server in esecuzione in Linux. In precedenza, solo i membri del ruolo del server sysadmin potevano eseguire BULK INSERT o OPENROWSET(BULK...) in Linux.

SQL Server in Linux applica controlli aggiuntivi di convalida del file system e del percorso per le operazioni bulk, oltre a quanto richiesto in Windows. Un amministratore deve:

  • Concedere autorizzazioni di SQL Server appropriate all'utente
  • Concedere le autorizzazioni del file system Linux per i file di dati
  • Approvare in modo esplicito i percorsi di directory usando mssql-conf

Prerequisiti

  • SQL Server 2025 (17.x) CU 3 o versione successiva in Linux
  • Accesso amministrativo all'host Linux
  • Accesso amministrativo all'istanza di SQL Server

Configurare il file system Linux

Prima di poter eseguire operazioni di importazione in blocco, l'account di servizio mssql deve avere accesso in lettura ai file di dati nel file system Linux.

  1. Creare una directory per i file di dati in blocco:

    mkdir -p /tmp/bulkload/sales/
    
  2. Creare un file di dati di esempio:

    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. Concedere l'autorizzazione di lettura all'account di processo di SQL Server (mssql) nel file di dati:

    setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
    

Configurare i percorsi consentiti con mssql-conf

Un amministratore deve approvare le directory da cui è possibile leggere le operazioni bulk, usando l'impostazione bulkadmin.allowedpathslist in mssql-conf. Questa modifica diventa effettiva immediatamente e non richiede un riavvio del servizio SQL Server.

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"

Per specificare più directory, separare ogni percorso con due punti (:):

sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"

In alternativa, è possibile specificare una directory padre per consentire tutte le sottodirectory al di sotto di essa.

Restrizioni di percorso

Le restrizioni seguenti si applicano ai percorsi configurati per le operazioni bulk:

  • Il percorso deve essere un percorso assoluto. Percorsi relativi contenenti . o .. non sono consentiti.
  • Il percorso radice (/) non è consentito.
  • Il percorso non deve superare i 4.096 caratteri.
  • Il percorso non deve contenere caratteri non validi (null, nuova riga, ritorno a capo o scheda).
  • I collegamenti simbolici non sono consentiti.
  • Il percorso deve fare riferimento a una directory.

Percorsi non consentiti

Il sistema blocca alcuni percorsi critici in base alla progettazione. Non è possibile usare questi percorsi come percorsi di file di dati di origine per le operazioni bulk, anche se vengono aggiunti all'elenco dei percorsi consentiti:

  • /var/opt/mssql (o la directory di installazione di SQL Server)
  • /var/opt/azcmagent/certs
  • /var/opt/azcmagent/tokens

Le operazioni bulk che leggono i dati di origine da questi percorsi hanno esito negativo per motivi di sicurezza. Questa restrizione non si applica al ERRORFILE percorso di output, che usa la directory dei dati di SQL Server per impostazione predefinita.

Configurare le autorizzazioni di SQL Server

Dopo aver configurato il file system Linux e i percorsi consentiti, configurare le autorizzazioni di SQL Server per l'utente che esegue l'importazione in blocco.

  1. Connettersi all'istanza di SQL Server e creare un database e una tabella di esempio:

    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. Creare un account di accesso per l'utente di importazione in blocco:

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>';
    GO
    
  3. Concedere l'autorizzazione ADMINISTER BULK OPERATIONS o aggiungere l'accesso al ruolo bulkadmin. Usare una delle opzioni seguenti:

    -- 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. Creare un utente del database e concedere le autorizzazioni necessarie per la tabella:

    USE demodbforbulkinsert;
    GO
    
    CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser;
    GO
    
    GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser;
    GO
    

Eseguire un'importazione in blocco

Connettersi al database come BulkLoadUser account di accesso ed eseguire l'importazione massiva:

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

Le stesse autorizzazioni, la configurazione del file system Linux e i passaggi di approvazione del percorso si applicano alle affermazioni INSERT ... SELECT * FROM OPENROWSET(BULK...). Per altre informazioni, vedere Importare dati in blocco tramite BULK INSERT o OPENROWSET(BULK...).

Comportamento di aggiornamento e riduzione di versione

A partire da SQL Server 2025 (17.x) CU 3, SQL Server su Linux supporta operazioni bulk usando il ruolo bulkadmin o l'autorizzazione ADMINISTER BULK OPERATIONS.

Se si disinstalla CU 3 o si esegue il downgrade a un aggiornamento cumulativo precedente:

  • Le autorizzazioni precedentemente concesse rimangono assegnate ma non sono funzionali.
  • Le operazioni bulk richiedono autorizzazioni sysadmin , come nelle versioni precedenti a CU 3.