Saya menyiapkan lingkungan DEV / TEST menggunakan 2 Server SQL yang menjalankan SQL Server 2012 pada Windows Server 2012. Kami sedang beralih dari SQL Server 2005 pada Windows Server 2008, di mana kami telah menjalankan dan menjalankannya dengan benar.
Di SQL Server 2012, otentikasi Kerberos tidak berfungsi.
Setiap server memiliki akun Active Directory miliknya sendiri yang memiliki hak "Nama Pokok Layanan Menulis" dan "Nama Pokok Layanan Baca" yang diberikan melalui Pengguna dan Komputer Direktori Aktif. Setiap kali saya terhubung ke server SQL Server 2005, dan jalankan:
SELECT net_transport, auth_scheme
FROM sys.dm_exec_connections
WHERE session_id = @@SPID;
Saya melihat:
net_transport auth_scheme
TCP KERBEROS
Ketika saya melakukan permintaan yang sama terhadap contoh SQL Server 2012 baru saya, saya melihat:
net_transport auth_scheme
TCP NTLM
Jika saya menggunakan SetSPN -Q MSSQLSvc/*
kueri Domain Aktif untuk Nama-nama Utama Layanan, saya melihat server 2005 dan 2012 terdaftar, dengan cara yang persis sama selain nama server.
Contohnya:
MSSQLSvc/SERVERa2005.domain.inet
MSSQLSvc/SERVERa2005domain.inet:1433
MSSQLSvc/SERVERb2005.domain.inet
MSSQLSvc/SERVERb2005domain.inet:1433
MSSQLSvc/SERVERa2012.domain.inet
MSSQLSvc/SERVERa2012domain.inet:1433
MSSQLSvc/SERVERb2012.domain.inet
MSSQLSvc/SERVERb2012domain.inet:1433
Apa lagi yang harus saya lakukan untuk mengaktifkan Otentikasi Kerberos ke SQL Server 2012? Buku Daring sepertinya tidak memiliki hal lain untuk dikatakan, kecuali bahwa SPN harus disiapkan. Yang jelas, mereka. Log SQL Server Error pada kedua mesin 2012 mengatakan:
2012-12-10 14:55:47.630 The SQL Server Network Interface library
successfully registered the Service Principal Name (SPN)
[ MSSQLSvc/SERVERa2012.domain.inet ] for the SQL Server
service.
2012-12-10 14:55:47.630 The SQL Server Network Interface library
successfully registered the Service Principal Name (SPN)
[ MSSQLSvc/SERVERa2012.domain.inet:1433 ] for the SQL
Server service.
2012-12-10 14:55:47.590 SQL Server is attempting to register a Service
Principal Name (SPN) for the SQL Server service.
Kerberos authentication will not be possible until a
SPN is registered for the SQL Server service. This is an
informational message. No user action is required.
sumber
Jawaban:
Berurusan dengan Active Directory selalu sangat menyenangkan. Satu-satunya hal terpenting di sini adalah untuk menyadari bahwa Anda berurusan dengan data terdistribusi yang dapat memakan waktu untuk disebarkan di seluruh jaringan Anda.
SQL Server yang dipertanyakan mengubah nama mereka sebagai bagian dari prosedur pemutakhiran; kami mengganti mesin yang sudah ada (SQL01) yang menjalankan SQL Server 2005 dengan mesin baru (SQL03) yang menjalankan SQL Server 2012. SQL03 adalah nama dari mesin baru ketika saya awalnya mengaturnya di domain. SQL01 memiliki SPN yang ada yang terkait dengan satu akun domain yang kami gunakan untuk beberapa SQL Server yang berjalan pada tahun 2005. Karena ini adalah praktik terbaik untuk hanya menjalankan mesin tunggal di bawah akun domain mana pun, saya membuat akun baru dan mengonfigurasi SQL03 untuk dijalankan dengan itu nama akun. Setelah mengeluarkan SQL01 asli dari layanan, dan mengubah nama SQL03 ke SQL01, ada konflik SPN.
Saya menggunakan utilitas SetSPN.exe untuk menghapus SPN yang bertentangan (pada akun domain lama) - dan masih tidak berfungsi. Pada titik ini, saya tidak melakukan apa-apa lagi dan pindah ke item lain. Ketika saya kembali sekitar 30 menit kemudian, otentikasi KERBEROS berfungsi. Saya hanya perlu menunggu perubahan SPN untuk menyebar di antara pengontrol domain kami.
Saya menggunakan
SetSPN -L DOMAIN\Account
dan membandingkan output denganSetSPN -Q MSSQLSvc/Machine.domain.inet:1433
untuk menemukan duplikat SPN, dan kemudian digunakanSetSPN -D MSSQLSvc/Machine.domain.inet:1433 DOMAIN\Account
untuk menghapus SPN lama.sumber
Bacaan tambahan tentang pemecahan masalah kesalahan Kerberos dapat ditemukan di tautan berikut
sumber