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
Począwszy od SQL Server 2022 (16.x) Cumulative Update 27 (CU27) oraz SQL Server 2025 (17.x) Cumulative Update 9 (CU9), możesz korzystać z roli stałego serwera bulkadmin lub ADMINISTER BULK OPERATIONS uprawnień do wykonywania operacji masowego importu danych na SQL Server działającym na Linuksie. Wcześniej tylko członkowie stałej roli serwera sysadmin mogli uruchamiać BULK INSERT lub OPENROWSET(BULK...) w systemie Linux.
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) CU 27 lub nowsza wersja na Linuksie, lub SQL Server 2025 (17.x) CU 9 lub nowsza wersja na Linuksie
- Dostęp administracyjny do hosta systemu Linux
- Dostęp administracyjny do wystąpienia SQL Server
Konfigurowanie systemu plików systemu Linux
Zanim wykonasz operacje importu zbiorczego, konto usługi mssql wymaga dostępu do odczytu 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 = '<password>'; GOUdziel uprawnienia
ADMINISTER BULK OPERATIONSlub dodaj login do stałej 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; 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
Jeśli przejdziesz do aktualizacji kumulatywnej wcześniejszej niż SQL Server 2022 (16.x) CU 24 lub SQL Server 2025 (17.x) CU 3:
Wcześniej przyznane uprawnienia pozostają przypisane, ale nie są funkcjonalne.
Operacje masowe wymagają uprawnień administratora systemu .
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