データベーススクリプトを構築しようとしている.NETアプリケーションで作業しています。プロジェクトのビルド中に、「SSPIコンテキストを作成できません。」というエラーが表示されます。このエラーは出力ウィンドウ(VS2008画面内)に表示され、構築プロセスは失敗しました。これで助けてください。 SQL Serverは、Windows認証で動作し、ネットワークサービスとして実行するように構成されています(これらの2つは私のプロジェクトに必要です)。
これで助けてください。このエラーは一貫していないようです。過去にマシンを再起動し、システム時間をドメイン時間とネット上のいくつかの提案に合わせて変更することで修正されました。これで助けてください。
これは、さまざまな原因による非常に一般的なエラーです。ここから KB 811889 で始めてください
お使いのPCが認証ドメインコントローラーにしばらく接続していないようです。 (私はこれをラップトップで数回繰り返していました。)
パスワードの有効期限が切れた場合にも発生する可能性があります。
MSSQLSERVER-Serviceを実行しているユーザーを変更した後、同じ問題が発生しました
SQL Serverで誤ったSPNを解決するために、このツールを使用しました
http://www.Microsoft.com/en-us/download/details.aspx?id=39046 -SQL Server用Microsoft®Kerberos構成マネージャー
私の場合、それはかなりうまくいきました。
このエラーは通常、Windowsユーザーアカウントの有効期限が切れ、古いパスワードで既にログインしている場合に発生します。ユーザーにマシンを再起動し、パスワードの有効期限が切れているか、パスワードを変更したかどうかを確認するだけです。お役に立てれば!!!!!
最初にすべきことは、ログ(_Management\SQL Server Logs
_)にアクセスして、SQL Server successfully registered the Service Principal Name (SPN)
かどうかを確認することです。何らかのエラー(The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service
)が表示された場合、どこから始めればよいかがわかります。
これは、SQL Serverが実行されているアカウントを変更したときに発生しました。この問題をローカルシステムアカウントにリセットすることで解決しました。 Microsoftには、SPNの手動設定に関する guide もあります。
SQL Server構成マネージャーを使用して、Cannot Generate SSPI Context
エラーを解決しました。マシンにSQL Serverネイティブクライアント10.0があるため、サーバーへの接続は名前付きパイプ(または共有メモリ?)を使用しようとしています。他のマシンでも問題なくアプリを実行できます。構成マネージャーを見ると、名前付きパイプと共有メモリの両方が有効になっています(良好)。ただし、エイリアスの下では、コンピューターの名前はTCP強制。 >。<domainname>代わりに。
IISでホストしている場合は、AppPoolアカウントのパスワードが変更されていないことを確認してください。
ある場合は、次の手順を実行します。
私もこの問題を発行し、サーバー管理者は http://www.sqlservercentral.com/Forums/Topic546566-146-1.aspx で提案されているindu_tejaと同じソリューションに従って解決しました。
Indu_tejaが提案するソリューションは次のように述べています。
この「SSPIコンテキストエラー」が表示された場合。私たちが直面している問題は次のとおりです。
- SQL Serverにリモートで接続することはできません。
- ただし、ローカルアカウントを使用してサーバーに接続できます。
原因:この問題は、Active DirectoryのSPNで適切な同期が行われないことが原因である可能性があります。
解決:
- SPNをリセットする必要があります。構文「SET SPN」を使用します。 netで構文を1回確認できます。
- SQLサーバーサービスアカウントをドメインアカウントからローカルアカウントに変更し、SQLをリサイクルしてから、ドメインアカウントで再度リセットし、SQLサーバーをリサイクルします。
「SSPIコンテキストを生成できません」エラーは非常に一般的であり、さまざまな理由で発生する可能性があります。基盤となるKerberos/NTLMエラーの単なるカバーエラーです。 GbnのKB記事リンクは非常に良い出発点であり、通常は問題を解決します。それでも問題が解決しない場合は、 Troubleshooting Kerberos Errors のトラブルシューティング手順に従うことをお勧めします。
私はちょうど同じ問題を抱えていて、別のユーザーIDを使用してSQLサーバーのユーザーログイン資格情報を削除し、それらを追加し直すだけでした。
これが私の場合です。 SQL Serverをホストするリモートマシンがありました。ローカルマシンから、C#コードを介してSQLインスタンスにアクセスしようとして、このエラーが発生していました。マシン/ドメインのユーザーアカウントのパスワードにexpiredがありました。次のように修正しました。
windows
+ L
キーを使用して完全にサインオフする必要はありませんでした)その後、すべてが正常に機能しました。
私の場合、SPNが欠落していたため、次の2つのコマンドを実行する必要がありました。
setspn -a MSSQLSvc:SERVERNAME SERVERNAME setspn -a MSSQLSvc:SERVERNAME:1433 SERVERNAME
言い換えれば、私の場合、NETBIOS名だけでなくFQDNがすでに正しくあり、これらを追加した後は正常に機能しました。最初はそうではありませんでしたが、2分間待った後でした。
おそらく、接続文字列でIntegrated Security = SSPIを使用した可能性があります。 SSPIは、Windows Authentication.henceを使用した信頼できる接続に使用され、Windows認証で適切に動作します。システムとデータベースサーバーは同じドメインにあり、同じDNSサーバーアドレスを使用するか、信頼できるドメインにある必要があります。
システムとデータベースサーバーが同じドメインにある場合は、システムのネットワーク接続でIPV4プロパティのDNSサーバーアドレスを確認し、データベースサーバーで使用されている同じDNSサーバーを提供します。
このエラーが発生しました。パスワードの有効期限が切れたため、パスワードを変更する必要があったためです。気づかなかったのは、一部のプログラムではログインでき、すべてが正常に動作するため(Windowsを含む)、SQLサーバーにはログインできなかったためです。
Vb.netで、リンクサーバーを使用している場合は、接続文字列を確認します。統合セキュリティ= true;すべてのSQLプロバイダーで機能するわけではなく、OleDbプロバイダーで使用すると例外がスローされます。したがって、基本的にIntegrated Security = SSPI; SQLClientとOleDBの両方で機能するため、推奨されます。それでもエラーが発生する場合は、構文を完全に削除してください。
これの本当に奇妙なインスタンスがありました。 SQLサーバーのWindowsコンピューター名を含む接続文字列を持つすべてのWeb製品は正常に機能しましたが、内部ドメインが接続されたFQDNを持つ製品はSSPIエラーを返しました。つまり、COMPUTERNAMEとCOMPUTERNAME.DOMAIN(pingは常に期待どおりに機能しました)
これは、新しいSQLサーバーが使用されており、ホストファイルがコンピューター名とコンピューター名の両方を接続文字列のFQDNとしてポイントしている場合にのみ問題を引き起こしました。
この場合の解決策は、すべての接続文字列をコンピューター名のみに設定し、ドメイン参照を削除することでした。
SQL:2008R2 SQL2012
IIS:2008R2
これを解決するには、ドメイン(ドメインマシンであるサーバーマシンですが、ドメイン管理以外のSQL Serverとは関係ありません)をリセットし、その後クライアントマシンをリセットします。
早速のサポートありがとうございます!
コンピューターで作成されていないコードを実行している場合は、自分のコンピューターではなく、職場の同僚が使用するコンピューターで実行されるコードを実行する場合は、web.configを確認してください。空白にする必要がある場所に、userPrincipalNameとして同僚の名前があるかもしれません。これは、VSのプロジェクトへのサービス参照を作成すると自動的に行われます。
この問題は、サービスユーザーをDomain1\ServiceUserからDomain2\ServiceUserに変更したインスタンスで発生しました。 SPNはDomain1\ServiceUserの下に登録されたままで、Domain2\ServiceUserの下には登録されません。 Domain2\ServiceUserの下にSPNを登録しましたが、問題は続きました。その後、Domain1\ServiceUserの下のSPNを削除し、問題は解決しました。