Kesalahan: Tidak Dapat Menghasilkan konteks SSPI

8

Ketika seseorang mencoba untuk menyambungkan ke contoh SQL Server, kesalahan muncul:

Itu tidak mungkin menghasilkan konteks SSPI.

Kemarin kami mengalami pemadaman (tidak tahu bagaimana mengatakan ungkapan ini dalam bahasa Inggris) dan saya harus mematikan server kami.

Mencari jawaban, saya menemukan ini:

Masalah konektivitas SQL Server 2008: tidak dapat menghasilkan konteks SSPI

Tapi itu tidak membantu saya, karena mereka bekerja dengan baik sampai kemarin. Saya tidak ingin mengubah apa pun. Tetapi jika harus, saya akan mengubahnya.

Obs: Saya tidak bisa memulai ulang server sekarang.


Sunting: Karena saya jawaban saya, kami tidak memiliki kesalahan.

SQL pembalap
sumber
Saya tidak dapat memulai ulang server, kami memiliki lebih dari 500 pengguna online. Saya benar-benar tidak tahu apa yang harus dilakukan. Tidak ada yang berguna di internet.
Pembalap SQL
1
Tetapkan kebijakan grup dari server itu sendiri untuk secara otomatis mengubah waktu bagi pengguna. Jika Anda tidak ingin me-restart server untuk memaksakan perubahan dalam kebijakan grup yang dapat Anda gunakan gpupdate /force. Lebih lanjut tentang subjek cantik ini di sini Tapi saya sangat merekomendasikan tugas ini untuk diserahkan kepada manajer server.
Nelz

Jawaban:

14

'Tidak dapat menghasilkan konteks SSPI' adalah kesalahan umum. Hal ini dapat disebabkan oleh banyak masalah, seperti kata sandi yang diuraikan, penyimpangan jam, izin akses Direktori Aktif, kegagalan untuk mendaftarkan SPN dan sebagainya dan seterusnya.

Tidak ada solusi untuk masalah ini. Satu-satunya 'solusi' adalah untuk menyelidiki penyebabnya, sesuai KB811889 dan / atau Mengatasi Masalah Kerberos Errors . Menerapkan satu solusi atau yang lain dari sumber daya Internet acak, tanpa memahami penyebabnya, mungkin atau mungkin tidak menyelesaikan masalah, mungkin atau mungkin tidak menyebabkan frustrasi, mungkin atau tidak dapat menyebabkan kerusakan yang tidak dapat dibatalkan.

Remus Rusanu
sumber
2
Jawaban-> Menerapkan satu solusi atau yang lain dari sumber daya Internet acak, tanpa memahami penyebabnya, mungkin atau mungkin tidak menyelesaikan masalah, mungkin atau mungkin tidak menyebabkan frustrasi, mungkin atau tidak dapat menyebabkan kerusakan yang tidak dapat dibatalkan. Respons -> "Kami mengubah pengguna SQL SERVICE menjadi" Domain Admin "." -ooooo-kaay kalau begitu.
matao
3

Kami mengubah SQL SERVICE userke yang " Domain Admin".

Saya telah melakukan beberapa penelitian untuk mengetahui mengapa ini terjadi. Dikatakan bahwa ketika Anda mematikan layanan, Anda memerlukan akun dengan hak istimewa untuk membuat SPN baru (ketika dihidupkan lagi). Jika Anda memulai layanan tanpa itu, itu akan ditampilkan di CANNOT GENERATE SSPI CONTEXT.

kami mengubah hak istimewa akun sistem kami.

Semoga ini bisa membantu seseorang.

SQL pembalap
sumber
8
Praktik yang baik untuk akun layanan adalah memberi mereka hak istimewa seminimal mungkin. Memberi admin domain akun layanan Anda adalah kebalikan dari pendekatan itu - saya sangat merekomendasikan untuk tidak melakukannya, dari sudut pandang keamanan.
Mike
2

Kami memiliki masalah ini setelah kami mengambil database dari PROD dan mengembalikannya dalam QA. Aplikasi kami memanggil tiga database pada tiga server dan selain itu tidak rumit.

Ternyata SPN palsu (Nama Pokok Layanan) menghalangi akun layanan di mana koneksi seharusnya sudah berjalan. Kami menemukan ini menggunakan Program Files> Microsoft Kerberos Config Manager.

Perbaikan jangka pendek adalah menggunakan SQL Server Configuration Manager dan mengubah koneksi SQL Server dan SQL Server Agent dari akun layanan ke 'LocalSystem' di bawah 'Use BuiltIn Account'.

Bob Sullentrup
sumber
1

Tidak dapat menghasilkan konteks SSPI dapat berarti hal itu. Ketika klien terhubung ke SQL server, ia menggunakan metode generasi yang mencakup jenis layanan (MsSQLsvr) Server FQDN dan port. Ini menggunakan DNS untuk menghasilkan nama server sehingga jika itu menyelesaikan nama salah karena CNAME atau file host dll generasi akan gagal. Ping server yang diinginkan dan lihat balasan apa yang Anda dapatkan. Jika bukan FQDN dari server SQL maka SPN akan dihasilkan secara tidak benar yang menyebabkan kesalahan ini.

Adrian Morson
sumber
1

Dalam beberapa situasi Anda akan mendapatkan kesalahan ini karena pengaturan SPN. Sebagai contoh jika Anda melakukan pengujian pemulihan bencana ke server baru Anda mungkin mendapatkan kesalahan SSPI saat terhubung ke SQL Server. Yang lebih aneh adalah bahwa Anda mungkin dapat terhubung menggunakan SQL Server Management Studio tetapi Anda tidak dapat terhubung melalui ODBC atau OLEDB. Mungkin ada solusi sementara yang mungkin akan memungkinkan Anda untuk sampai ke database.

Penanganan Masalah : Pada setiap komputer klien yang mencoba terhubung ke SQL Server, buat entri di setiap file host workstation. Mekanisme pasti yang digunakan untuk memperbaiki masalah ini belum dikonfirmasi tetapi mungkin penggunaannya mengesampingkan kebutuhan SPN.

Meskipun ini tidak dijamin akan diperbaiki untuk semua kasus, kemungkinan besar Anda akan kembali aktif. Ini seharusnya tidak dianggap perbaikan permanen. Anda harus menyelesaikan SPN atau masalah lain dalam situasi yang ideal. Namun, jika Anda mengalami masalah dengan mesin Windows lama yang menjalankan sistem operasi yang tidak didukung atau jika Anda hanya melakukan pembuktian konsep pengujian pemulihan bencana, ini akan membuat Anda berada di tempat yang Anda inginkan agar lampu tetap menyala atau produksi tetap hidup dan beroperasi.

Jason Geiger
sumber
Saya hanya ingin menegaskan kembali bahwa ini adalah solusi. Penanganan masalah bukan perbaikan permanen. Jika Anda ingin mengurangi masalah di masa mendatang, Anda harus memperbaiki masalah mendasar yang, menurut pengalaman saya, berkaitan dengan SPN.
Jason Geiger
Entri memetakan nama mesin ke IP mesin?
Bill Greer
1

Saya mengalami masalah ini dan telah diatasi dengan menghapus entri SPN di atribut akun komputer di AD untuk server

Temukan akun mesin di Pengguna dan Komputer AD (Tampilan lanjutan)

masukkan deskripsi gambar di sini

Kemudian hapus dua entri di servicePrincipalName untuk MSSQLSvc

masukkan deskripsi gambar di sini

Bill Appleton
sumber
0

Saya punya masalah serupa. Saya akhirnya harus menghapus entri dari informasi SPN pada akun komputer di ADSIEdit.

Setelah menghapus entri, saya memulai kembali layanan SQL dan mendaftarkan SPN dengan akun sumber daya domain yang saya buat. Saya kemudian dapat mengakses SQL Server dari jarak jauh.

DJSkippy
sumber
0

Bagi saya solusinya adalah menjalankan SQL Studio sebagai pengguna domain dengan perintah ini:

runas / user: OtherDomain \ User SSMS.exe

badai
sumber
0

Saya mengalami masalah ini baru-baru ini. Saya menjalankan sebagai akun NT SERVICE dan ketika saya beralih menggunakan akun layanan, saya tidak bisa lagi terhubung menggunakan SSMS dengan nama mesin atau FQDN. Saya bisa terhubung dengan alamat IP. Dengan beberapa penggalian saya menemukan bahwa SPN di Active Directory untuk contoh SQL terdaftar pada mesin. Setelah saya menghapus ini dan kemudian menambahkannya ke akun layanan, dan reboot mesin SQL, semuanya berfungsi sebagaimana mestinya. Senang memberikan detail lebih lanjut jika diperlukan.

Rob Hawthorne
sumber