Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Utwórz katalog dla plików danych zbiorczych:
mkdir -p /tmp/bulkload/sales/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 EOFUdziel 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.
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 ); GOUtwórz identyfikator logowania dla użytkownika importu zbiorczego:
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOUdziel uprawnienia lub dodaj
ADMINISTER BULK OPERATIONSlogowanie 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; GOUtwó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.
Treści powiązane
- BULK INSERT (Transact-SQL)
- Importowanie danych do SQL Server przy użyciu BULK INSERT lub OPENROWSET(BULK...)
- Zagadnienia dotyczące zabezpieczeń programu SQL Server w systemie Linux
- Przewodnik po zabezpieczeniach i uprawnieniach dla SQL Server on Linux
- Konfigurowanie programu SQL Server w systemie Linux za pomocą narzędzia mssql-conf