web-dev-qa-db-ja.com

ターゲットプリンシパル名が正しくありません。 SSPIコンテキストを生成できません

マシンAからSQL Serverを実行しているマシンBへのSQL Server接続を取得するのに苦労しています。

私は広範囲にグーグルで検索しましたが、見つかったものはすべて機能していません。また、これらの問題を解決するプロセスを段階的に説明することもありません。

Kerberosは使用していませんが、NTLMは構成されています。

enter image description here

関係するマシンは次のとおりです(xxはセキュリティのためにマシン名の一部を隠すために使用されます)。

  • xxPRODSVR001-Windows Server 2012ドメインコントローラー
  • xxDEVSVR003-Windows Server 2012(このマシンはエラーを生成しています)
  • xxDEVSVR002-Windows Server 2012(このマシンはSQL Server 2012を実行しています)

次の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のエラーメッセージだけがよりわかりやすく、接続しようとしているプリンシパル名を教えてくれた場合、これを診断できる可能性があります。

だから誰かが私にこの問題を解決する方法を順を追って教えてもらえますか?

より多くのデバッグ情報を生成したいので、必要なものを教えてください。

50
TheEdge

作業していたASP.NET MVCアプリでこの問題が発生しました。

最近パスワードを変更したことに気付き、ログアウトして再度ログインすることで修正できました。

27
Slothario

同じ問題に数時間を費やしました。 "Integrated Security=true"が問題を引き起こしたことが判明しました。

接続文字列からこのパラメータを削除してください。

20
Anatolyevich

Windows認証を使用してSQL Server Management Studio経由で接続すると、このエラーを受け取りました。パスワードの有効期限は切れていましたが、まだ変更していませんでした。変更したら、新しい資格情報を使用してマシンが動作するように、ログアウトしてから再度ログインする必要がありました。

15
Matt Shepherd

パスワードの代わりにPINを使用してWindows 10にログインしていました。ログアウトして、代わりにパスワードでログインし直し、Management Studio経由でSQL Serverにアクセスできました。

8
Don

Windows認証を試みたときに、同じエラーが表示されました。馬鹿げているように聞こえますが、万が一誰かの助けになった場合に備えて、ログイン中にドメインアカウントが何らかの形でロックされたためです(!)。アカウントのロックを解除すると修正されました。

7

この最も曖昧なエラー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がここと同じであることを確認します。それは私のためにこのエラーを修正しました。

6
Alex

SQLボックスとクライアントの両方にログインして、次を入力します。

ipconfig /flushdns
nbtstat -R

それでもうまくいかない場合は、クライアントマシンでDHCPを更新してください。

5
Frank.Germain

SSPIコンテキストエラーは、Kerberosを使用して認証が試行されていることを明確に示しています。

セキュリティイベントログを確認します。Kerberosを使用している場合は、認証パッケージKerberosを使用したログオン試行が表示されます。

NTLM認証が失敗している可能性があるため、Kerberos認証が試行されています。また、セキュリティイベントログにNTLMログオン試行の失敗が表示される場合がありますか?

Devでkerberosイベントロギングをオンにして、非常に冗長ではあるが、kerberosが失敗する理由をデバッグすることができます。

3
Sarah

私は隔離されたネットワーク内の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サーバーでツールを実行し、ステータスにエラーと表示されている場合に問題があるかどうかを確認してから、表示される修正ボタンを押します。

これで問題は解決しました。

3
Graham Walker

私の場合、(開発サーバーで)SQL Server 2014を再起動すると問題が修正されました。

3
mxasim

私はこれに遭遇し、2つのことを行うことで修正しました。

  1. https://support.Microsoft.com/en-us/kb/811889 で説明されているように、ADSI Editを使用してサービスアカウントに読み取り/書き込みservicePrincipalName権限を付与する
  2. 以前にSQL Serverに存在していたSPNを削除するコンピューターアカウント(サービスアカウントではなく)

    setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
    

    ここで、1234はインスタンスが使用するポート番号でした(私のインスタンスはデフォルトのインスタンスではありませんでした)。

3
EM0

Webアプリケーションにアクセスするときにこの問題が発生しました。最近Windowsのパスワードを変更したことが原因の可能性があります。

Webアプリケーションをホストしているアプリプールのパスワードを更新すると、この問題は解決しました。

2
Ramki

クライアントとサーバー間のクロックの一致を確認します。

このエラーが断続的に発生した場合、上記の答えはどれも機能していませんでしたが、一部のサーバーで時間がずれていたことがわかりました。 w32tmまたはNTPを検索して、Windowsで時刻を自動的に同期する方法を確認します。

2
Daniel Bailey

私はこのために新しいものに出くわしました:Server 2012でホストされるSQL2012。SQLAlwaysOnのクラスターを作成するタスクを担当しました。
クラスターが作成され、全員がSSPIメッセージを受け取りました。

問題を修正するには、次のコマンドを実行しました。

setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService

DomainNamerunningSQLService == SQLに設定したドメインアカウントコマンドを実行するにはドメイン管理者が必要でした。クラスター内の1つのサーバーのみに問題がありました。

その後、SQLを再起動しました。驚いたことに、私は接続することができました。

1
Questions101

私は今日これに出くわし、私の修正を共有したいと思いました。これは単に見落とされており、修正が簡単だからです。

独自のrDNSを管理し、最近、サーバーの命名スキームを再作成しました。その一環として、rDNSを更新し、これを忘れていたはずです。

Pingは正しいホスト名を返しましたが、ping -aは間違ったホスト名を返しました。

簡単な修正:rDNSを変更し、ipconfig/flushdnsを実行し、30秒待機し(私が行うこと)、別のping -aを実行し、正しいホスト名を解決することを確認し、接続します...利益。

1
CrainBramp

Visual Studio 2015コンソールアプリでラップトップからSQL Server 2015を実行しているVMに接続しようとしました。前の晩にアプリを実行しましたが、問題ありません。朝、アプリをデバッグしようとすると、このエラーが発生します。 ipconfig/flushrelease + renewとその他のゴミを試しましたが、最終的には...

VMを再起動して、クライアントを再起動します。それは私のためにそれを修正しました。毎回、再起動が機能することを知っていたはずです。

1
AlbatrossCafe

「SQL Server構成マネージャー」から「名前付きパイプ」が有効になっていることを確認します。これは私のために働いた。

  1. 「SQL Server構成マネージャー」を開きます。
  2. 左側のリストから「SQL Serverネットワーク構成」を展開します。
  3. [[インスタンス名]のプロトコル]を選択します。
  4. 右側のリストから「名前付きパイプ」を右クリックします。
  5. 「有効にする」を選択します
  6. インスタンスサービスを再起動します。
1
S3minaki

自分の問題の解決策を探しているときにここに着いたので、他の人がここに着いた場合に備えて、ここで自分の解決策を共有します。

マシンが別のドメインの別のオフィスに移動されるまで、SQL Serverに正常に接続していました。次に、切り替え後、ターゲットプリンシパル名に関するこのエラーが発生していました。修正されたのは、server.domain.comなどの完全修飾名を使用して接続することでした。実際、最初のサーバーにそのように接続すると、サーバー名のみ(完全修飾なし)を使用して他のサーバーに接続できますが、走行距離は異なる場合があります。

1
Greg

このエラーが発生したユーザーは1人だけで、SQL Serverは1つだけでした。サーバー名のWindows Credentialsの下にあるコントロールパネル-Credential Managerに古いパスワードを保存していたことがわかりました。保存された資格情報を削除し、機能しました。

0
sqlslinger

私の場合、問題はwifiでDNSを設定することでした。設定を削除し、空のままにして作業しました。

Como ficou minha configuração do DNS

0
Mateus Cabral

これが私を捕まえ、他の誰かを助けるかもしれないので、ここに追加します。警告者、私は窓の人ではありませんが、SQLサーバーを含むシナリオを見なければなりませんでした。

開発者向けの完全なSQL Server製品をダウンロードし、Windows 10にインストールしました。すべてローカル接続に適していますが、リモートクライアントには適していません。

上記の多くを試してみましたが、Windows認証がremoteclient\myuserを認証することを望み、スタンドアロンのWindowsの世界では認証するメカニズムを作成する方法がありませんでした(私はそれを理解しています) 「SSPIコンテキストを生成できません」というエラーメッセージ。

SQL認証の使用も機能していないようです。

最終的に、結合モードを備えたSQL Server Expressに戻り、リモートクライアントからSQL認証を使用できるようになりました。

0
Longmang

同じ問題がありました。最近、Windowsのパスワードを変更しましたが、ウェブサイトでエラーがスローされました。ログアウトしてログインしようとしましたが、うまくいきませんでした。次に、「カスタムアカウント」セクションのアカウントを使用してdefaultappppolを設定し、新しいパスワードを使用してアカウントをもう一度設定したことに気付きました。これは魔法をしました!!!このソリューションに関するご意見をお聞かせください。

0
Anitha Sriram

私はこの問題の変形に遭遇しました、ここに特徴がありました:

  • ユーザーは名前付きインスタンスに正常に接続できました。たとえば、Server\Instanceへの接続は成功しました
  • ユーザーはnableでデフォルトインスタンスに接続しました。たとえば、Serverへの接続はSSPIに関するOPのスクリーンショットで失敗しました
  • ユーザーは、Server.domain.comへの接続が失敗したなど、完全修飾名を使用してデフォルトのインスタンスを接続できませんでした(タイムアウト)
  • ユーザーは、192.168.1.134への接続に失敗したなど、名前付きインスタンスなしでIPアドレスに接続できませんでした
  • ドメイン上にない他のユーザー(たとえば、ネットワークにVPN接続しているユーザー)が、ドメイン資格情報を使用して、デフォルトのインスタンスとIPアドレスに正常に接続できました

そのため、この1人のユーザーが接続できなかった理由を突き止めようとする多くの頭痛の種の後に、状況を修正するために行った手順を以下に示します。

  1. 次を使用してSPNリストのサーバーを見てください。
    setspn -l Server
    a。私たちの場合、それはServer.domain.comと言いました
  2. C:\Windows\System32\drivers\etc\hostsにあるホストファイルにエントリを追加します(このファイルを変更するには、管理者としてメモ帳を実行します)。追加したエントリは
    Server.domain.com Server

この後、SSMSを介してデフォルトのインスタンスに正常に接続することができました。

0
sorrell

SQL.COMに基づいたミッキーマウステストシステムを実行しています。

接続できなかったマシンとできるマシンの両方でsetspn -T sql -F -Q */Servername(この場合はSQL01)を実行しました。その後、問題のマシンの追加エントリを削除するだけで、すべてが機能しました。 setspn -D MSSQLSvc/SQL01.SQL.COM:1433 SQL01

0
DOK

私もWindows認証でログイン中にSQL Server 2014でこの問題を抱えていましたが、サーバーを一度再起動してログインしようとすると問題が解決しました。

0

ドメインに参加しているWindows 10マシンでL2TP VPNを介してSQL Server 2017インスタンスに接続しようとすると、この問題が発生しました。

問題は私のVPN設定にありました。セキュリティ設定、認証、EAP-MSCHAPv2の使用、および[プロパティ]ダイアログで、Automatically use my Windows logon name and password (and domain if any).を選択しました

Location of the option to turn off

これをオフにしてからVPNを再接続すると、SQL Serverに正常に接続できました。

これにより、SQLログイン(Windowsアカウントセキュリティ)でNTLMではなくKerberosが使用され、SSPIエラーが発生したと考えられます。

0
slasky

私は同じ問題を抱えていましたが、マシンのロックとロック解除はうまくいきました。ファイアウォールの問題によりエラーが発生する場合があります。

私の経験を共有するだけで、それがあなたに役立つかどうかはわかりません。

0
somu

SQLサーバーでこの問題が発生しました。 pn -D mssqlsvc\Hostname.domainname Hostnameを設定してから、SQLサーバーサービスを停止および開始しました。

私は、SQLサービスを停止して開始するだけで実行できると考えています。

0
Jeff

ここですべてのソリューションを試してみましたが、どれもまだ機能していません。動作している回避策は、接続をクリックし、サーバー名を入力して、[オプション]、[接続プロパティ]タブを選択することです。 「ネットワークプロトコル」を「名前付きパイプ」に設定します。これにより、ユーザーはネットワーク資格情報を使用してリモート接続できます。修正プログラムを入手したら、更新プログラムを投稿します。

0
Julie

理想的なソリューションではありませんが、このページを見た人のために将来の参考のためにこれを追加したかっただけです。

ドメインアカウントを使用してリモートSQL Serverインスタンスに接続しようとすると、別のマシンでホストされているインスタンスで同じことをしようとすると、この問題が発生していました。

そのため、別のインスタンスを使用するだけのオプションがある場合には役立ちますが、実際には問題が何であれ対処しません。

0
Josh G

問題と思われるのはDNSサーバーに関連しています。この問題を解決するには、IPアドレスをComputerNameに変更します。

例:値「10.0.0.10\TestDB」を「YourcomputerName\TestDB」に変更します

0
Jaykumar Anbu