Konfigurowanie operacji importowania zbiorczego dla programu SQL Server w systemie Linux (wersja zapoznawcza)

Dotyczy: SQL Server 2022 (16.x) i nowsze wersje w systemie Linux

Ważna

Ta funkcja jest obecnie w wersji zapoznawczej.

Zaczynając od SQL Server 2022 (16.x) Cumulative Update 24 (CU24) oraz SQL Server 2025 (17.x) Cumulative Update 3 (CU3), możesz korzystać z roli bulkadmin fixed server lub ADMINISTER BULK OPERATIONS uprawnień do wykonywania operacji masowego importu danych na SQL Server działającym na Linuksie. Wcześniej tylko członkowie roli stałego administratora systemu mogli uruchomić BULK INSERTlub uruchomić OPENROWSET(BULK...) na Linuksie.

SQL Server on Linux wymusza dodatkowe kontrole systemu plików i walidacji ścieżek dla operacji masowych, wykraczając poza wymagania Windows. Administrator musi:

  • Udzielanie odpowiednich uprawnień programu SQL Server użytkownikowi
  • Udzielanie uprawnień systemu plików systemu Linux do plików danych
  • Jawnie zatwierdzaj ścieżki katalogowe z pomocą mssql-conf

Wymagania wstępne

  • SQL Server 2022 (16.x) CU24 lub nowsza wersja w systemie Linux lub SQL Server 2025 (17.x) CU3 lub nowsza wersja w systemie Linux
  • Dostęp administracyjny do hosta systemu Linux
  • Dostęp administracyjny do wystąpienia SQL Server

Konfigurowanie systemu plików systemu Linux

Zanim rozpoczniesz operacje masowego importu, konto serwisowe mssql musi mieć dostęp do plików danych w systemie plików Linux.

  1. Utwórz katalog dla plików danych zbiorczych:

    mkdir -p /tmp/bulkload/sales/
    
  2. Utwórz przykładowy plik danych:

    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. Udziel uprawnień do odczytu dla konta użytkownika procesu SQL Server (mssql) do pliku danych.

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

Konfigurowanie dozwolonych ścieżek za pomocą narzędzia mssql-conf

Administrator musi zatwierdzić katalogi, z których operacje zbiorcze mogą odczytywać, korzystając z ustawienia bulkadmin.allowedpathslist w mssql-conf. Ta zmiana wchodzi w życie natychmiast i nie wymaga ponownego uruchomienia usługi programu SQL Server.

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

Aby określić wiele katalogów, należy oddzielić każdą ścieżkę dwukropkiem (:):

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

Alternatywnie można określić katalog nadrzędny zezwalający na wszystkie podkatalogi pod nim.

Ograniczenia ścieżki

Następujące ograniczenia dotyczą ścieżek skonfigurowanych do operacji zbiorczych:

  • Ścieżka musi być ścieżką bezwzględną. Ścieżki względne zawierające . lub .. nie są dozwolone.
  • Ścieżka główna (/) nie jest dozwolona.
  • Ścieżka nie może przekraczać 4096 znaków.
  • Ścieżka nie może zawierać nieprawidłowych znaków (null, nowego wiersza, powrotu karetki lub karty).
  • Łącza symboliczne nie są dozwolone.
  • Ścieżka musi odwoływać się do katalogu.

Ścieżki zabronione

System blokuje kilka ścieżek krytycznych zgodnie z projektem. Nie można używać tych lokalizacji jako ścieżek pliku danych źródłowych dla operacji zbiorczych, nawet jeśli dodasz je do listy dozwolonych ścieżek:

  • /var/opt/mssql (lub katalog instalacyjny programu SQL Server)
  • /var/opt/azcmagent/certs
  • /var/opt/azcmagent/tokens

Operacje zbiorcze odczytujące dane źródłowe z tych ścieżek kończą się niepowodzeniem ze względów bezpieczeństwa. To ograniczenie nie ma zastosowania do ścieżki wyjściowej ERRORFILE , która domyślnie używa katalogu danych programu SQL Server.

Konfigurowanie uprawnień programu SQL Server

Po skonfigurowaniu systemu plików systemu Linux i dozwolonych ścieżek skonfiguruj uprawnienia programu SQL Server dla użytkownika, który wykonuje importowanie zbiorcze.

  1. Połącz się z wystąpieniem programu SQL Server i utwórz przykładową bazę danych i tabelę.

    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. Utwórz identyfikator logowania dla użytkownika importu zbiorczego:

    USE master;
    GO
    
    CREATE LOGIN BulkLoadUser
    WITH PASSWORD = '<strong_password>';
    GO
    
  3. Udziel uprawnienia lub dodaj ADMINISTER BULK OPERATIONS logowanie do roli stałego serwera bulkadmin . Użyj jednej z następujących opcji:

    -- 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. Utwórz użytkownika bazy danych i przyznaj niezbędne uprawnienia do tabeli:

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

Uruchamianie importu zbiorczego

Połącz się z BulkLoadUser bazą danych, używając loginu, i uruchom importowanie zbiorcze:

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

Te same uprawnienia, konfiguracja systemu plików Linux i kroki zatwierdzania ścieżki mają zastosowanie do instrukcji INSERT ... SELECT * FROM OPENROWSET(BULK...). Aby uzyskać więcej informacji, zobacz temat Używanie BULK INSERT lub OPENROWSET(BULK...) do importowania danych do programu SQL Server.

Zachowanie uaktualniania i obniżania poziomu

Począwszy od SQL Server 2022 (16.x) CU24 oraz SQL Server 2025 (17.x) CU3, SQL Server on Linux obsługuje operacje masowe z wykorzystaniem roli ADMINISTER BULK OPERATIONS lub uprawnień stałego serwera bulkadmin.

W przypadku obniżenia poziomu do aktualizacji zbiorczej wcześniejszej niż SQL Server 2022 (16.x) CU24 lub SQL Server 2025 (17.x) CU3:

  • Wcześniej przyznane uprawnienia pozostają przypisane, ale nie są funkcjonalne.
  • Operacje masowe wymagają uprawnień administratora systemu , podobnie jak w wersjach sprzed tych aktualizacji kumulatywnych.