Saya berjuang untuk mendapatkan koneksi SQL Server dari mesin A ke mesin B yang menjalankan SQL Server.
Saya telah mencari di Google secara ekstensif dan semua hal yang saya temukan tidak berhasil. Mereka juga tidak membimbing Anda selangkah demi selangkah melalui proses pemecahan ini.
Kami tidak menggunakan Kerberos, tetapi NTLM yang dikonfigurasi.
Mesin yang terlibat adalah (xx digunakan untuk mengaburkan beberapa nama mesin untuk tujuan keamanan):
- xxPRODSVR001 - Pengontrol Domain Windows Server 2012
- xxDEVSVR003 - Windows Server 2012 (Mesin ini menghasilkan kesalahan)
- xxDEVSVR002 - Windows Server 2012 (Mesin ini menjalankan SQL Server 2012)
SPN berikut ini terdaftar di DC (xxPRODSVR001). Saya telah mengaburkan domain dengan yyy untuk tujuan keamanan:
ServicePrincipalNames terdaftar untuk CN = xxDEVSVR002, CN = Komputer, DC = yyy, DC = lokal:
MSSQLSvc/xxDEVSVR002.yyy.local:49298 MSSQLSvc/xxDEVSVR002.yyy.local:TFS RestrictedKrbHost/xxDEVSVR002 RestrictedKrbHost/xxDEVSVR002.yyy.local Hyper-V Replica Service/xxDEVSVR002 Hyper-V Replica Service/xxDEVSVR002.yyy.local Microsoft Virtual System Migration Service/xxDEVSVR002 Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local Microsoft Virtual Console Service/xxDEVSVR002 Microsoft Virtual Console Service/xxDEVSVR002.yyy.local SMTPSVC/xxDEVSVR002 SMTPSVC/xxDEVSVR002.yyy.local WSMAN/xxDEVSVR002 WSMAN/xxDEVSVR002.yyy.local Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local TERMSRV/xxDEVSVR002 TERMSRV/xxDEVSVR002.yyy.local HOST/xxDEVSVR002 HOST/xxDEVSVR002.yyy.local
ServicePrincipalNames terdaftar untuk CN = xxDEVSVR003, CN = Komputer, DC = yyy, DC = lokal:
MSSQLSvc/xxDEVSVR003.yyy.local:1433 MSSQLSvc/xxDEVSVR003.yyy.local Hyper-V Replica Service/xxDEVSVR003 Hyper-V Replica Service/xxDEVSVR003.yyy.local Microsoft Virtual System Migration Service/xxDEVSVR003 Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local Microsoft Virtual Console Service/xxDEVSVR003 Microsoft Virtual Console Service/xxDEVSVR003.yyy.local WSMAN/xxDEVSVR003 WSMAN/xxDEVSVR003.yyy.local TERMSRV/xxDEVSVR003 TERMSRV/xxDEVSVR003.yyy.local RestrictedKrbHost/xxDEVSVR003 HOST/xxDEVSVR003 RestrictedKrbHost/xxDEVSVR003.yyy.local HOST/xxDEVSVR003.yyy.local
Sekarang jika hanya pesan kesalahan SQL Server yang lebih deskriptif dan memberi tahu saya nama utama apa yang coba disambungkan, saya mungkin dapat mendiagnosis ini.
Jadi, adakah yang bisa memberi tahu saya cara menyelesaikan yang satu ini atau apakah Anda melihat ada yang salah dalam hal yang saya berikan?
Saya akan dengan senang hati menghasilkan lebih banyak info debug, cukup beri tahu saya apa yang Anda butuhkan.
Jawaban:
Saya mengalami masalah ini dengan aplikasi ASP.NET MVC yang saya kerjakan.
Saya menyadari bahwa saya baru saja mengubah kata sandi saya, dan saya dapat memperbaikinya dengan keluar dan masuk kembali.
sumber
Saya menerima kesalahan ini saat menyambung melalui SQL Server Management Studio menggunakan Otentikasi Windows. Kata sandi saya telah kedaluwarsa tetapi saya belum mengubahnya. Setelah diubah, saya kemudian harus keluar dan masuk kembali agar mesin berfungsi menggunakan kredensial baru saya.
sumber
Coba setel
Integrated Security=true
untuk menghapus param ini dari string koneksi.PENTING: Saat pengguna @Auspex berkomentar,
sumber
Integrated Security
akan mencegah kesalahan ini, karena kesalahan terjadi saat mencoba masuk dengan kredensial Windows Anda. Sayangnya, sering kali, Anda ingin bisa masuk dengan kredensial Windows Anda!Saya mendapatkan kesalahan yang sama ketika mencoba melalui otentikasi windows. Kedengarannya menggelikan, tetapi untuk berjaga-jaga jika ini membantu orang lain: itu karena akun domain saya terkunci entah bagaimana saat saya masih masuk (!). Membuka kunci akun memperbaikinya.
sumber
Saya masuk ke Windows 10 dengan PIN, bukan kata sandi. Saya keluar dan masuk kembali dengan kata sandi saya dan bisa masuk ke SQL Server melalui Management Studio.
sumber
Kesalahan konteks SSPI pasti menunjukkan otentikasi sedang dicoba menggunakan Kerberos .
Karena otentikasi Kerberos Otentikasi Windows SQL Server bergantung pada Active Directory , yang memerlukan hubungan dorong antara komputer Anda dan pengontrol domain jaringan, Anda harus mulai dengan memvalidasi hubungan itu.
Anda dapat dengan cepat memeriksa hubungan itu, melalui perintah Powershell berikut Test-ComputerSecureChannel .
Jika mengembalikan False , Anda harus memperbaiki saluran aman Active Directory komputer, karena tanpanya tidak ada validasi kredensial domain di luar komputer Anda.
Anda dapat memperbaiki Saluran Aman Komputer Anda, melalui perintah Powershell berikut :
Test-ComputerSecureChannel -Repair
Periksa log peristiwa keamanan, jika Anda menggunakan kerberos, Anda akan melihat upaya masuk dengan paket otentikasi: Kerberos.
Otentikasi NTLM mungkin gagal sehingga upaya otentikasi kerberos sedang dilakukan. Anda mungkin juga melihat upaya logon NTLM gagal di log peristiwa keamanan Anda?
Anda dapat mengaktifkan pencatatan log peristiwa kerberos di dev untuk mencoba men-debug mengapa kerberos gagal, meskipun sangat bertele-tele.
Manajer Konfigurasi Kerberos Microsoft untuk SQL Server dapat membantu Anda dengan cepat mendiagnosis dan memperbaiki masalah ini.
Berikut ini kisah yang bagus untuk dibaca: http://houseofbrick.com/microsoft-made-an-easy-button-for-spn-and-double-hop-issues/
sumber
Hanya untuk menambahkan solusi potensial lain untuk kesalahan yang paling ambigu ini
The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider)
:Verifikasi bahwa IP yang diselesaikan saat melakukan ping ke SQL Server adalah sama dengan yang ada di Pengelola Konfigurasi. Untuk memeriksanya, buka SQL Server Configuration Manager lalu buka Konfigurasi Jaringan SQL Server> Protokol untuk MSSQLServer> TCP / IP.
Pastikan TCP / IP diaktifkan dan di tab Alamat IP, pastikan bahwa IP yang diselesaikan server saat melakukan ping adalah sama di sini. Itu memperbaiki kesalahan ini untuk saya.
sumber
Masalahnya tampaknya menjadi masalah kredensial windows. Saya mendapatkan kesalahan yang sama di laptop kerja saya dengan VPN. Saya seharusnya masuk sebagai Domain / Nama Pengguna saya, yang berhasil saya gunakan saat menghubungkan secara langsung tetapi segera setelah saya pindah ke VPN dengan koneksi lain, saya menerima kesalahan ini. Saya pikir itu adalah masalah DNS karena saya bisa melakukan ping ke server tetapi ternyata saya perlu menjalankan SMSS secara eksplisit sebagai pengguna saya dari Command prompt.
misalnya runas / netonly / user: YourDoman \ YourUsername "C: \ Program Files (x86) \ Microsoft SQL Server Management Studio 18 \ Common7 \ IDE \ Ssms.exe"
sumber
Masuk ke SQL Box dan klien Anda, lalu ketik:
Jika tidak berhasil, perbarui DHCP Anda di mesin klien ... Ini berfungsi untuk 2 PC di kantor kami.
sumber
ipconfig/release
danipconfig/renew
pada mesin klien saya dan itu tidak berhasil untuk saya; (Saya baru saja mengalami ini dan memperbaikinya dengan melakukan 2 hal:
Menghapus SPN yang sebelumnya ada di akun komputer SQL Server (sebagai lawan akun layanan) menggunakan
di mana 1234 adalah nomor port yang digunakan oleh instance (milik saya bukan instance default).
sumber
NT Service\MSSQLSSERVER
menjadi menjalankan sebagai Akun Layanan Terkelola. Setelah melakukannya, SSMS dapat terhubung ke database secara lokal di server, tetapi tidak dari jarak jauh dari laptop saya. Memperbaiki SPN mengatasi masalah tersebut.Dalam kasus saya, memulai ulang SQL Server 2014 (di server pengembangan saya) memperbaiki masalah.
sumber
Saya sedang menguji IPv6 pada sekelompok PC di jaringan yang terisolasi dan mengalami masalah ini ketika saya kembali ke IPv4. Saya telah bermain di direktori aktif, DNS dan DHCP jadi tidak tahu apa yang saya dorong untuk merusak pengaturan Kerberos.
Saya menguji ulang koneksi di luar perangkat lunak saya dengan tip berguna ini untuk menghubungkan konektivitas jarak jauh yang saya temukan.
https://blogs.msdn.microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/
kemudian setelah pencarian singkat menemukan ini di situs web Microsoft https://support.microsoft.com/en-gb/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context-error-message .
jalankan alat di server SQL, lihat apakah ada masalah jika status mengatakan kesalahan, lalu tekan tombol perbaiki yang muncul.
Ini menyelesaikan masalah saya.
sumber
Ini biasanya karena Nama Prinsip Layanan (SPN) yang hilang, salah, atau terduplikasi
Langkah-langkah penyelesaian:
Pastikan output yang dikembalikan berisi SPN yang sepenuhnya memenuhi syarat, tidak memenuhi syarat, dengan port dan tanpa port.
Output yang Diharapkan:
Jika Anda tidak melihat semua hal di atas, jalankan perintah berikut di PowerShell atau CMD dalam mode admin (pastikan untuk mengubah port jika Anda tidak menggunakan default 1433)
Selain itu, jika Anda mendapatkan pesan tentang duplikat SPN yang ditemukan, Anda mungkin ingin menghapusnya dan membuatnya kembali
sumber
Saya mengalami masalah ini saat mengakses aplikasi web. Mungkin karena saya telah mengubah kata sandi windows baru-baru ini.
Masalah ini teratasi ketika saya memperbarui kata sandi untuk kumpulan aplikasi tempat saya meng-host aplikasi web.
sumber
Periksa apakah jam Anda cocok antara klien dan server.
Ketika saya mengalami kesalahan ini sesekali, tidak ada jawaban di atas yang berfungsi, kemudian kami menemukan waktu telah menyimpang di beberapa server kami, begitu mereka disinkronkan lagi, kesalahan itu hilang. Cari w32tm atau NTP untuk mengetahui cara menyinkronkan waktu secara otomatis di Windows.
sumber
Karena saya mendarat di sini ketika mencari solusi untuk masalah saya sendiri, saya akan membagikan solusi saya di sini, jika orang lain juga mendarat di sini.
Saya menghubungkan dengan baik ke SQL Server sampai mesin saya dipindahkan ke kantor lain di domain lain . Kemudian, setelah peralihan, saya mendapatkan kesalahan ini terkait nama pokok target. Yang memperbaikinya adalah menghubungkan menggunakan nama yang sepenuhnya memenuhi syarat seperti: server.domain.com . Dan sebenarnya, begitu saya terhubung ke server pertama dengan cara itu, saya dapat terhubung ke server lain hanya dengan menggunakan nama server (tanpa kualifikasi lengkap), tetapi jarak tempuh Anda mungkin berbeda.
sumber
Saya mengalami ini hari ini dan ingin membagikan perbaikan saya, karena yang ini diabaikan dan mudah diperbaiki.
Kami mengelola rDNS kami sendiri dan baru-baru ini mengubah skema penamaan server kami. Sebagai bagian dari itu, kami harus memperbarui rDNS kami dan lupa melakukan ini.
Sebuah ping memunculkan nama host yang benar, tetapi ping -a mengembalikan nama host yang salah.
Perbaikan mudah: ubah rDNS, lakukan ipconfig / flushdns, tunggu 30 detik (hanya sesuatu yang saya lakukan), lakukan ping lagi -a, lihat itu menyelesaikan nama host yang benar, hubungkan ... untung.
sumber
Saya menemukan yang baru untuk ini: SQL 2012 di-host di Server 2012. Ditugasi untuk membuat cluster untuk SQL AlwaysOn.
Cluster dibuat setiap orang mendapat pesan SSPI.
Untuk memperbaiki masalah, jalankan perintah berikut:
setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService
DomainNamerunningSQLService
== akun domain yang saya tetapkan untuk SQL Saya membutuhkan Administrator Domain untuk menjalankan perintah. Hanya satu server di cluster yang mengalami masalah.Kemudian mulai ulang SQL. Yang mengejutkan saya, saya dapat terhubung.
sumber
MSSQLSvc/SERVER_FQNName:*
SPN dari akun komputer dan kemudian menambahkannya ke akun pengguna yang menjalankan layanan.Saya mencoba menyambung ke VM yang menjalankan SQL Server 2015 dari laptop saya di Aplikasi Konsol Visual Studio 2015. Saya menjalankan aplikasi saya malam sebelumnya dan tidak apa-apa. Di pagi hari saya mencoba men-debug aplikasi dan saya mendapatkan kesalahan ini. Saya mencoba
ipconfig/flush
danrelease
+renew
dan sekelompok sampah lainnya, tetapi pada akhirnya ...Mulai ulang VM Anda dan mulai ulang klien. Itu memperbaikinya untuk saya. Saya seharusnya tahu, restart bekerja setiap saat.
sumber
Saya punya masalah ini di server sql saya. Saya setspn -D mssqlsvc \ Hostname.domainname Hostname kemudian berhenti dan memulai layanan SQL server saya.
Saya berpikir bahwa hanya dengan menghentikan dan memulai layanan sql saya akan berhasil.
sumber
setspn -L <Hostname>
dengan server yang berfungsi. Ternyata semua instans yang berfungsi tidak memiliki SPN yang terdaftar. Saya tidak begitu tahu apa yang saya lakukan, tapi ternyata tanpa SPN-SPN tersebut, NTLM bisa digunakan. Terima kasih!Saya memiliki masalah yang sama, tetapi mengunci, dan membuka kunci mesin berhasil untuk saya. Terkadang, masalah firewall akan memberikan kesalahan.
Saya tidak yakin ini akan berhasil untuk Anda atau tidak, hanya berbagi pengalaman saya.
sumber
Saya telah mencoba semua solusi di sini dan belum ada yang berhasil. Solusi yang berhasil adalah dengan Klik Hubungkan , masukkan nama server, pilih Opsi, tab Properti Koneksi. Setel "Protokol jaringan" ke "Pipa Bernama". Ini memungkinkan pengguna untuk menghubungkan jarak jauh menggunakan kredensial jaringan mereka. Saya akan memposting pembaruan ketika saya mendapatkan perbaikan.
sumber
Dalam kasus saya, masalahnya adalah mengatur DNS di wifi. Saya menghapus pengaturan, dan membiarkannya kosong, dan bekerja.
sumber
Pastikan bahwa "Pipa bernama" diaktifkan dari "Manajer Konfigurasi Server SQL". Ini berhasil untuk saya.
sumber
Alat Microsoft ini seperti Magic. Jalankan, hubungkan ke server SQL, dan klik Perbaiki
Versi lama yang ditautkan di sini berfungsi di SQL server 2017.
Manajer Konfigurasi Kerberos untuk SQL Server https://www.microsoft.com/en-us/download/details.aspx?id=39046
sumber
Dalam situasi saya, saya mencoba menggunakan Keamanan Terpadu untuk menyambung dari PC ke SQL Server di PC lain di jaringan tanpa domain. Di kedua PC, saya masuk ke Windows dengan akun Microsoft yang sama . Saya beralih ke akun lokal di PC dan SQL Server sekarang berhasil tersambung.
sumber
Dalam Kasus saya sejak saya bekerja di lingkungan pengembangan saya, seseorang telah mematikan Pengontrol Domain dan Kredensial Windows tidak dapat diautentikasi. Setelah menyalakan Pengontrol Domain, kesalahan menghilang dan semuanya bekerja dengan baik.
sumber
Ceruk lain untuk masalah ini disebabkan oleh koneksi jaringan. Saya terhubung melalui klien Windows VPN dan masalah ini muncul ketika saya beralih dari Wifi ke koneksi kabel. Perbaikan untuk situasi saya adalah menyesuaikan metrik adaptor secara manual.
Di PowerShell, gunakan Get-NetIPInterface untuk melihat semua nilai metrik. Angka yang lebih rendah lebih murah sehingga lebih disukai oleh windows. Saya mengganti ethernet dan VPN dan kredensial sampai di tempat yang mereka butuhkan agar SSMS senang.
Untuk mengkonfigurasi fitur Metrik Otomatis: Di Panel Kontrol, klik dua kali Sambungan Jaringan. Klik kanan antarmuka jaringan, lalu pilih Properti. Klik Protokol Internet (TCP / IP), lalu pilih Properti. Pada tab Umum, pilih Tingkat Lanjut. Untuk menentukan metrik, pada tab Pengaturan IP, pilih untuk mengosongkan kotak centang Metrik otomatis, lalu masukkan metrik yang Anda inginkan di bidang Metrik Antarmuka.
Sumber: https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/automatic-metric-for-ipv4-routes
sumber
Saya mengalami varian dari masalah ini, berikut adalah karakteristiknya:
Server\Instance
berhasilServer
gagal dengan tangkapan layar OP mengenai SSPIServer.domain.com
gagal (batas waktu)192.168.1.134
gagalJadi, setelah banyak pusing mencoba mencari tahu mengapa pengguna tunggal ini tidak dapat terhubung, berikut adalah langkah-langkah yang kami ambil untuk memperbaiki situasi tersebut:
setspn -l Server
file. Dalam kasus kami, katanya
Server.domain.com
C:\Windows\System32\drivers\etc\hosts
(jalankan Notepad sebagai Administrator untuk mengubah file ini). Entri yang kami tambahkan adalahServer.domain.com Server
Setelah ini, kami berhasil terhubung melalui SSMS ke instance default.
sumber
Saya juga mengalami masalah ini di SQL Server 2014 saat masuk dengan Windows Authentication, untuk mengatasi masalah ini, saya telah me-restart server saya sekali dan kemudian mencoba masuk, itu berhasil untuk saya.
sumber