Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Linux üzerinde SQL Server 2025 (17.x)
Önemli
Bu özellik şu anda önizlemededir.
SQL Server 2025 (17.x) Toplu Güncelleştirme (CU) 3'den başlayarak , bulkadmin sunucu rolünü veya ADMINISTER BULK OPERATIONS Linux üzerinde çalışan SQL Server üzerinde toplu veri içeri aktarma işlemlerini gerçekleştirmek için izni kullanabilirsiniz. Daha önce yalnızca sysadmin sunucu rolünün üyeleri Linux üzerinde BULK INSERT veya OPENROWSET(BULK...) çalıştırabiliyor.
Linux üzerinde SQL Server, Windows'ta gerekenlerin ötesinde toplu işlemler için ek dosya sistemi ve yol doğrulama denetimleri uygular. Bir yöneticinin şunları yapması gerekir:
- Kullanıcıya uygun SQL Server izinleri verme
- Veri dosyalarında Linux dosya sistemi izinleri verme
- Dizin yollarını kullanarak
mssql-confaçıkça onaylayın
Önkoşullar
- Linux'ta SQL Server 2025 (17.x) CU 3 veya üzeri sürümü
- Linux konağına yönetici erişimi
- SQL Server örneğine yönetici erişimi
Linux dosya sistemini yapılandırma
Toplu içeri aktarma işlemlerini mssql çalıştırabilmeniz için önce hizmet hesabının Linux dosya sistemindeki veri dosyalarına okuma erişimine sahip olması gerekir.
Toplu veri dosyalarınız için bir dizin oluşturun:
mkdir -p /tmp/bulkload/sales/Örnek veri dosyası oluşturma:
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 EOFVeri dosyasında SQL Server işlem hesabına (
mssql) okuma izni verin:setfacl -m u:mssql:r /tmp/bulkload/sales/loadsalesdata.csv
mssql-conf ile izin verilen yolları yapılandırma
Yöneticinin, bulkadmin.allowedpathslist ayarını kullanarak toplu işlemlerin okuyabileceği dizinleri onaylaması gerekiyor mssql-conf. Bu değişiklik hemen geçerli olur ve SQL Server hizmetinin yeniden başlatılmasını gerektirmez.
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales"
Birden çok dizin belirtmek için her yolu iki nokta üst üste (:):
sudo /opt/mssql/bin/mssql-conf set bulkadmin.allowedpathslist "/tmp/bulkload/sales:/tmp/bulkload/marketing"
Alternatif olarak, altındaki tüm alt dizinlere izin vermek için bir üst dizin belirtebilirsiniz.
Yol kısıtlamaları
Toplu işlemler için yapılandırılan yollara aşağıdaki kısıtlamalar uygulanır:
- Yol mutlak bir yol olmalıdır.
.veya..içeren göreli yollar izin verilmez. - Kök yola (
/) izin verilmez. - Yol 4.096 karakteri aşmamalıdır.
- Yol geçersiz karakterler (boş değer, yeni satır, satır başı veya sekme) içermemelidir.
- Sembolik bağlantılara izin verilmez.
- Yol bir dizini işaret etmelidir.
Yasak yollar
Sistem bazı kritik yolları tasarım gereği engeller. Bu konumları izin verilen yollar listesine ekleseniz bile toplu işlemler için kaynak veri dosyası yolları olarak kullanamazsınız:
-
/var/opt/mssql(veya SQL Server yükleme dizini) /var/opt/azcmagent/certs/var/opt/azcmagent/tokens
Bu yollardan kaynak verileri okuyan toplu işlemler güvenlik nedeniyle başarısız olur. Bu kısıtlama, varsayılan olarak SQL Server veri dizinini ERRORFILE kullanan çıkış yolu için geçerli değildir.
SQL Server izinlerini ayarlama
Linux dosya sistemini ve izin verilen yolları yapılandırdıktan sonra, toplu içeri aktarmayı gerçekleştiren kullanıcı için SQL Server izinlerini ayarlayın.
SQL Server örneğine bağlanın ve örnek bir veritabanı ve tablo oluşturun:
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 ); GOToplu veri içe aktarma kullanıcısı için bir giriş oluşturun.
USE master; GO CREATE LOGIN BulkLoadUser WITH PASSWORD = '<strong_password>'; GOADMINISTER BULK OPERATIONSİzin verin veya oturum açma bilgilerini bulkadmin sunucu rolüne ekleyin. Aşağıdaki seçeneklerden birini kullanın:-- 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; GOVeritabanı kullanıcısı oluşturun ve gerekli tablo izinlerini verin:
USE demodbforbulkinsert; GO CREATE USER BulkLoadUser FOR LOGIN BulkLoadUser; GO GRANT INSERT, SELECT ON dbo.Sales TO BulkLoadUser; GO
Toplu içe aktarma işlemi başlatma
Oturum açma olarak veritabanına bağlanın BulkLoadUser ve toplu içeri aktarmayı çalıştırın:
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
İzinler, Linux dosya sistemi yapılandırması ve yol onay adımları INSERT ... SELECT * FROM OPENROWSET(BULK...) ifadeleri için aynıdır. Daha fazla bilgi için bkz. BULK INSERT veya OPENROWSET(BULK...) kullanarak toplu verileri içeri aktarma.
Yükseltme ve düşürme davranışı
SQL Server 2025 (17.x) CU 3'den başlayarak, Linux üzerinde SQL Server bulkadmin rolünü veya ADMINISTER BULK OPERATIONS iznini kullanarak toplu işlemleri destekler.
CU 3'i kaldırırsanız veya önceki bir toplu güncelleştirmeye düşürerseniz:
- Daha önce verilen izinler atanmış olarak kalır ancak işlevsel değildir.
- Toplu işlemler, CU 3'ün önceki sürümlerinde olduğu gibi sysadmin izinleri gerektirir.