Udostępnij za pośrednictwem


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

Dotyczy: SQL Server 2025 (17.x) w systemie Linux

Ważna

Ta funkcja jest obecnie dostępna w wersji zapoznawczej.

Począwszy od trzeciej Aktualizacji Zbiorczej (CU) programu SQL Server 2025 (17.x), można używać roli serwera bulkadmin lub uprawnienia ADMINISTER BULK OPERATIONS do wykonywania operacji importowania danych masowych w SQL Server działającym na systemie Linux. Wcześniej tylko członkowie roli serwera sysadmin mogą uruchamiać operacje BULK INSERT lub OPENROWSET(BULK...) w systemie Linux.

Program SQL Server w systemie Linux wymusza dodatkowe sprawdzanie poprawności systemu plików i ścieżki dla operacji zbiorczych, poza tym, co jest wymagane w systemie Windows. Administrator musi:

  • Udzielanie odpowiednich uprawnień programu SQL Server użytkownikowi
  • Udzielanie uprawnień systemu plików systemu Linux do plików danych
  • Wyraźne zatwierdzanie ścieżek katalogów za pomocą mssql-conf

Wymagania wstępne

  • SQL Server 2025 (17.x) CU 3 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

Przed uruchomieniem operacji mssql importowania zbiorczego konto usługi musi mieć dostęp do odczytu do plików danych w systemie plików systemu 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. Przyznaj uprawnienia ADMINISTER BULK OPERATIONS lub dodaj konto logowania do roli 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 Importowanie danych zbiorczych przy użyciu funkcji BULK INSERT lub OPENROWSET(BULK...).

Zachowanie uaktualniania i obniżania poziomu

Począwszy od programu SQL Server 2025 (17.x) CU 3, program SQL Server w systemie Linux obsługuje operacje zbiorcze przy użyciu roli bulkadmin lub uprawnienia ADMINISTER BULK OPERATIONS.

Jeśli odinstalujesz CU 3 lub wrócisz do wcześniejszej aktualizacji zbiorczej:

  • Wcześniej przyznane uprawnienia pozostają przypisane, ale nie są funkcjonalne.
  • Operacje zbiorcze wymagają uprawnień administratora systemu , tak jak w wersjach wcześniejszych niż CU 3.