マシンAからSQL Serverを実行しているマシンBへのSQL Server接続を取得するのに苦労しています。
私は広範囲にグーグルで検索しましたが、見つかったものはすべて機能していません。また、これらの問題を解決するプロセスを段階的に説明することもありません。
Kerberosは使用していませんが、NTLMは構成されています。
関係するマシンは次のとおりです(xxはセキュリティのためにマシン名の一部を隠すために使用されます)。
次のSPNがDC(xxPRODSVR001)に登録されています。セキュリティのために、yyyでドメインを隠しています:
CN = xxDEVSVR002、CN = Computers、DC = yyy、DC = localに登録されているServicePrincipalNames:
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
CN = xxDEVSVR003、CN = Computers、DC = yyy、DC = localに登録されているServicePrincipalNames:
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
これで、SQL Serverのエラーメッセージだけがよりわかりやすく、接続しようとしているプリンシパル名を教えてくれた場合、これを診断できる可能性があります。
だから誰かが私にこの問題を解決する方法を順を追って教えてもらえますか?
より多くのデバッグ情報を生成したいので、必要なものを教えてください。
作業していたASP.NET MVCアプリでこの問題が発生しました。
最近パスワードを変更したことに気付き、ログアウトして再度ログインすることで修正できました。
同じ問題に数時間を費やしました。 "Integrated Security=true"
が問題を引き起こしたことが判明しました。
接続文字列からこのパラメータを削除してください。
Windows認証を使用してSQL Server Management Studio経由で接続すると、このエラーを受け取りました。パスワードの有効期限は切れていましたが、まだ変更していませんでした。変更したら、新しい資格情報を使用してマシンが動作するように、ログアウトしてから再度ログインする必要がありました。
パスワードの代わりにPINを使用してWindows 10にログインしていました。ログアウトして、代わりにパスワードでログインし直し、Management Studio経由でSQL Serverにアクセスできました。
Windows認証を試みたときに、同じエラーが表示されました。馬鹿げているように聞こえますが、万が一誰かの助けになった場合に備えて、ログイン中にドメインアカウントが何らかの形でロックされたためです(!)。アカウントのロックを解除すると修正されました。
この最も曖昧なエラーThe target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider)
に別の潜在的な解決策を追加するだけです:
SQL Serverにpingを実行するときに解決されるIPが、Configuration Managerのものと同じであることを確認します。確認するには、SQL Server構成マネージャーを開き、[SQL Serverネットワーク構成]> [MSSQLServerのプロトコル]> [TCP/IP]に移動します。
TCP/IPが有効になっていることを確認し、[IPアドレス]タブで、pingの実行時にサーバーが解決するIPがここと同じであることを確認します。それは私のためにこのエラーを修正しました。
SQLボックスとクライアントの両方にログインして、次を入力します。
ipconfig /flushdns
nbtstat -R
それでもうまくいかない場合は、クライアントマシンでDHCPを更新してください。
SSPIコンテキストエラーは、Kerberosを使用して認証が試行されていることを明確に示しています。
セキュリティイベントログを確認します。Kerberosを使用している場合は、認証パッケージKerberosを使用したログオン試行が表示されます。
NTLM認証が失敗している可能性があるため、Kerberos認証が試行されています。また、セキュリティイベントログにNTLMログオン試行の失敗が表示される場合がありますか?
Devでkerberosイベントロギングをオンにして、非常に冗長ではあるが、kerberosが失敗する理由をデバッグすることができます。
私は隔離されたネットワーク内のPCのクラスターでIPv6をテストしていましたが、IPv4に戻したときにこの問題に遭遇しました。私はActive Directory、DNS、およびDHCPでプレイしていたので、Kerberosのセットアップを壊すために何をしたかわからない。
私が見つけたリモート接続を接続するために、この便利なヒントを使用して、ソフトウェアの外部の接続を再テストしました。
https://blogs.msdn.Microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/
その後、MicrosoftのWebサイトで簡単な検索でこれを見つけた後 https://support.Microsoft.com/en-gb/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context-error -message 。
sQLサーバーでツールを実行し、ステータスにエラーと表示されている場合に問題があるかどうかを確認してから、表示される修正ボタンを押します。
これで問題は解決しました。
私の場合、(開発サーバーで)SQL Server 2014を再起動すると問題が修正されました。
私はこれに遭遇し、2つのことを行うことで修正しました。
以前にSQL Serverに存在していたSPNを削除するコンピューターアカウント(サービスアカウントではなく)
setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
ここで、1234はインスタンスが使用するポート番号でした(私のインスタンスはデフォルトのインスタンスではありませんでした)。
Webアプリケーションにアクセスするときにこの問題が発生しました。最近Windowsのパスワードを変更したことが原因の可能性があります。
Webアプリケーションをホストしているアプリプールのパスワードを更新すると、この問題は解決しました。
クライアントとサーバー間のクロックの一致を確認します。
このエラーが断続的に発生した場合、上記の答えはどれも機能していませんでしたが、一部のサーバーで時間がずれていたことがわかりました。 w32tmまたはNTPを検索して、Windowsで時刻を自動的に同期する方法を確認します。
私はこのために新しいものに出くわしました:Server 2012でホストされるSQL2012。SQLAlwaysOnのクラスターを作成するタスクを担当しました。
クラスターが作成され、全員がSSPIメッセージを受け取りました。
問題を修正するには、次のコマンドを実行しました。
setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService
DomainNamerunningSQLService
== SQLに設定したドメインアカウントコマンドを実行するにはドメイン管理者が必要でした。クラスター内の1つのサーバーのみに問題がありました。
その後、SQLを再起動しました。驚いたことに、私は接続することができました。
私は今日これに出くわし、私の修正を共有したいと思いました。これは単に見落とされており、修正が簡単だからです。
独自のrDNSを管理し、最近、サーバーの命名スキームを再作成しました。その一環として、rDNSを更新し、これを忘れていたはずです。
Pingは正しいホスト名を返しましたが、ping -aは間違ったホスト名を返しました。
簡単な修正:rDNSを変更し、ipconfig/flushdnsを実行し、30秒待機し(私が行うこと)、別のping -aを実行し、正しいホスト名を解決することを確認し、接続します...利益。
Visual Studio 2015コンソールアプリでラップトップからSQL Server 2015を実行しているVMに接続しようとしました。前の晩にアプリを実行しましたが、問題ありません。朝、アプリをデバッグしようとすると、このエラーが発生します。 ipconfig/flush
とrelease
+ renew
とその他のゴミを試しましたが、最終的には...
VMを再起動して、クライアントを再起動します。それは私のためにそれを修正しました。毎回、再起動が機能することを知っていたはずです。
「SQL Server構成マネージャー」から「名前付きパイプ」が有効になっていることを確認します。これは私のために働いた。
自分の問題の解決策を探しているときにここに着いたので、他の人がここに着いた場合に備えて、ここで自分の解決策を共有します。
マシンが別のドメインの別のオフィスに移動されるまで、SQL Serverに正常に接続していました。次に、切り替え後、ターゲットプリンシパル名に関するこのエラーが発生していました。修正されたのは、server.domain.comなどの完全修飾名を使用して接続することでした。実際、最初のサーバーにそのように接続すると、サーバー名のみ(完全修飾なし)を使用して他のサーバーに接続できますが、走行距離は異なる場合があります。
このエラーが発生したユーザーは1人だけで、SQL Serverは1つだけでした。サーバー名のWindows Credentialsの下にあるコントロールパネル-Credential Managerに古いパスワードを保存していたことがわかりました。保存された資格情報を削除し、機能しました。
これが私を捕まえ、他の誰かを助けるかもしれないので、ここに追加します。警告者、私は窓の人ではありませんが、SQLサーバーを含むシナリオを見なければなりませんでした。
開発者向けの完全なSQL Server製品をダウンロードし、Windows 10にインストールしました。すべてローカル接続に適していますが、リモートクライアントには適していません。
上記の多くを試してみましたが、Windows認証がremoteclient\myuserを認証することを望み、スタンドアロンのWindowsの世界では認証するメカニズムを作成する方法がありませんでした(私はそれを理解しています) 「SSPIコンテキストを生成できません」というエラーメッセージ。
SQL認証の使用も機能していないようです。
最終的に、結合モードを備えたSQL Server Expressに戻り、リモートクライアントからSQL認証を使用できるようになりました。
同じ問題がありました。最近、Windowsのパスワードを変更しましたが、ウェブサイトでエラーがスローされました。ログアウトしてログインしようとしましたが、うまくいきませんでした。次に、「カスタムアカウント」セクションのアカウントを使用してdefaultappppol
を設定し、新しいパスワードを使用してアカウントをもう一度設定したことに気付きました。これは魔法をしました!!!このソリューションに関するご意見をお聞かせください。
私はこの問題の変形に遭遇しました、ここに特徴がありました:
Server\Instance
への接続は成功しましたServer
への接続はSSPIに関するOPのスクリーンショットで失敗しましたServer.domain.com
への接続が失敗したなど、完全修飾名を使用してデフォルトのインスタンスを接続できませんでした(タイムアウト)192.168.1.134
への接続に失敗したなど、名前付きインスタンスなしでIPアドレスに接続できませんでしたそのため、この1人のユーザーが接続できなかった理由を突き止めようとする多くの頭痛の種の後に、状況を修正するために行った手順を以下に示します。
setspn -l Server
Server.domain.com
と言いましたC:\Windows\System32\drivers\etc\hosts
にあるホストファイルにエントリを追加します(このファイルを変更するには、管理者としてメモ帳を実行します)。追加したエントリはServer.domain.com Server
この後、SSMSを介してデフォルトのインスタンスに正常に接続することができました。
SQL.COMに基づいたミッキーマウステストシステムを実行しています。
接続できなかったマシンとできるマシンの両方でsetspn -T sql -F -Q */Servername
(この場合はSQL01)を実行しました。その後、問題のマシンの追加エントリを削除するだけで、すべてが機能しました。 setspn -D MSSQLSvc/SQL01.SQL.COM:1433 SQL01
私もWindows認証でログイン中にSQL Server 2014でこの問題を抱えていましたが、サーバーを一度再起動してログインしようとすると問題が解決しました。
ドメインに参加しているWindows 10マシンでL2TP VPNを介してSQL Server 2017インスタンスに接続しようとすると、この問題が発生しました。
問題は私のVPN設定にありました。セキュリティ設定、認証、EAP-MSCHAPv2の使用、および[プロパティ]ダイアログで、Automatically use my Windows logon name and password (and domain if any).
を選択しました
これをオフにしてからVPNを再接続すると、SQL Serverに正常に接続できました。
これにより、SQLログイン(Windowsアカウントセキュリティ)でNTLMではなくKerberosが使用され、SSPIエラーが発生したと考えられます。
私は同じ問題を抱えていましたが、マシンのロックとロック解除はうまくいきました。ファイアウォールの問題によりエラーが発生する場合があります。
私の経験を共有するだけで、それがあなたに役立つかどうかはわかりません。
SQLサーバーでこの問題が発生しました。 pn -D mssqlsvc\Hostname.domainname Hostnameを設定してから、SQLサーバーサービスを停止および開始しました。
私は、SQLサービスを停止して開始するだけで実行できると考えています。
ここですべてのソリューションを試してみましたが、どれもまだ機能していません。動作している回避策は、接続をクリックし、サーバー名を入力して、[オプション]、[接続プロパティ]タブを選択することです。 「ネットワークプロトコル」を「名前付きパイプ」に設定します。これにより、ユーザーはネットワーク資格情報を使用してリモート接続できます。修正プログラムを入手したら、更新プログラムを投稿します。
理想的なソリューションではありませんが、このページを見た人のために将来の参考のためにこれを追加したかっただけです。
ドメインアカウントを使用してリモートSQL Serverインスタンスに接続しようとすると、別のマシンでホストされているインスタンスで同じことをしようとすると、この問題が発生していました。
そのため、別のインスタンスを使用するだけのオプションがある場合には役立ちますが、実際には問題が何であれ対処しません。
問題と思われるのはDNSサーバーに関連しています。この問題を解決するには、IPアドレスをComputerNameに変更します。
例:値「10.0.0.10\TestDB」を「YourcomputerName\TestDB」に変更します