Saya memiliki sepasang node Microsoft SQL Server 2016 di Grup Ketersediaan Selalu Aktif. Saya mencoba untuk melakukan BULK INSERT
(menggunakan query SQL Server 2016 Management Studio) pada file yang terletak di Cluster Failover Server File Windows Server 2016, tetapi saya mendapatkan kesalahan berikut:
Msg 4861, Level 16, Negara 1
Tidak dapat memuat massal karena file "\ nas2.my.domain \ Microsoft SQL Server 2016 Enterprise \ test.txt" tidak dapat dibuka. Kode kesalahan sistem operasi 5 (Akses ditolak.).
Ini akan terjadi terlepas jika saya menggunakan nama simpul aktif ( nas2.my.domain
) atau pendengar gugus failover ( nas.my.domain
).
Setelah melihat-lihat saya menemukan ini karena SQL Server tidak dapat menyamar sebagai akun pengguna saya terhubung dengan karena nuansa BULK INSERT
.
Jika Anda tersambung ke SQL Server menggunakan Windows Authentication, akun layanan SQL Server mencoba menyamar sebagai akun pengguna Anda saat menyambung ke server file. Jika Anda terhubung menggunakan otentikasi SQL Server, itu akan terhubung ke server file sebagai akun layanan SQL Server.
Jika pendelegasian dan peniruan identitas tidak dikonfigurasi dengan benar (keadaan default), layanan SQL Server tidak akan dapat menyamar sebagai akun pengguna Anda dan akan kembali mencoba menyambung ke server file sebagai pengguna anonim.
Ini dapat dikonfirmasi dengan melihat melalui log peristiwa keamanan di server file. Fakta-fakta ini bersama dengan panduan untuk mengkonfigurasi delegasi yang tidak dibatasi dan dibatasi didokumentasikan dalam tautan ini:
Saya sudah mencoba mengikuti petunjuk dalam panduan thesqldude tetapi masih tidak berfungsi.
Basis data yang saya coba BULK INSERT
bukan bagian dari grup ketersediaan sehingga hanya simpul MSSQL1 yang relevan. File Server aktif pada node NAS2. Memeriksa log peristiwa pada server file memang menunjukkan bahwa ia masih mengalami masalah ini dan SQL Server sedang mencoba untuk mengautentikasi ke server file sebagai pengguna anonim daripada meniru akun pengguna saya.
Adakah yang tahu apa yang salah? Atau jika ada sesuatu yang berubah di SQL Server 2016 untuk membuat panduan ini menjadi usang?
- Entri Log Keamanan Acara File Server
- Delegasi Akun Layanan
- SPN Akun Layanan
- Delegasi Akun Komputer SQL Server # 1
- File Server # 2 Akun Komputer SPN
- Objek Kebijakan Grup
sys.dm_exec_connections
- Kerberos
Saya dapat mengkonfirmasi bahwa GPO ini telah diterapkan ke MSSQL1 via gpresult.exe /R
, dan kedua SQL dan File Server node reboot setelah itu untuk memastikan semua cache telah dihapus.
Jawaban:
Konfigurasi Anda terlihat solid. SPN dan Delegasi dikonfigurasikan seperti yang akan saya lakukan sendiri.
Satu-satunya hal yang belum Anda jelaskan adalah izin file / share. Di sinilah solusi saya masuk.
Solusi 1 (Akun Pribadi)
Solusi 2 (Akun Layanan SQL Server)
Izin BULK INSERT
Referensi: BULK INSERT (Transact-SQL)
sumber
Dalam pengalaman saya dengan delegasi, Akun Layanan SQL Server membutuhkan izin yang sesuai untuk berbagi yang ia coba akses atas nama Anda. Sudahkah Anda menyesuaikan izin itu? Saya pikir membaca hanya akan cukup dimuka.
sumber