web-dev-qa-db-ja.com

ターゲットプリンシパル名が正しくありません。 SSPIコンテキストを生成できない(SQLまたはADの問題)?

昨夜停電があり、サーバーが復旧したとき、ドメインユーザーはSQL Server 2000インスタンス名MASSQLにアクセスできませんでした。

SQL認証を使用してアクセスできます。

  1. サービスを実行するユーザーがSSPIの読み取りと書き込みを行えることを確認しました
  2. 新しいユーザーを作成してみました
  3. NETWORK SERVICEアカウントを使用してサービスを実行してみました
  4. ローカルシステムアカウントとして実行してみました
  5. 新しいドメイン管理者アカウントを作成して、新しいドメイン管理者アカウントとしてサービスを実行してみました

また、問題のあるSQL Serverインスタンスに対して次のコマンドを実行しました。

setspn -L xsql2

結果

CN = MASSQL、CN = Computers、DC = ABC、DC = comの登録済みServicePrincipalNames:
 Host/MASSQL 
 Host/MASSQL.ABC.COM

問題のないSQLインスタンスに対して次のコマンドを実行しました。

setspn -L xensql1

結果

CN = XENSQL1、CN = Computers、DC = ABC、DC = comの登録済みServicePrincipalNames:
 WSMAN/XENSQL1 
 WSMAN/XENSQL1.ABC.com 
 RestrictedKrbHost/XENSQL1 
 Host/XENSQL1 
 RestrictedKrbHost/XENSQL1.ABC.COM 
 Host/XENSQL1.ABC.COM

問題のないインスタンスの結果には、より多くのデータがあるようです。これが2000年であり、もう1つが2012年であるという事実と関係があるのか​​どうかはわかりません。

何が起こったのでしょうか?ドメインユーザーに再度ログインを許可するにはどうすればよいですか?

4
Bill Greer

使用する setspn -X対象のSQL Serverの重複するSPNを検索します。

問題のSQL Serverサービスアカウントと一致しない重複したSPNを削除します。

SQL Serverのサービスプリンシパル名は、次の形式を取ります。

MSSQLSvc/server.domain:port 
 MSSQLSvc/server:port

SQL ServerがデフォルトのTCPポート、1433を使用していると仮定すると、次のサーバーが必要になると思います。

MSSQLSvc/MASSQL.abc.com:1433 
 MSSQLSvc/MASSQL:1433

これらのSPNは、次のコマンドを使用して作成できます。

SETSPN -A MSSQLSvc/MASSQL.abc.com:1433 DOMAIN\Account 
 SETSPN -A MSSQLSvc/MASSQL:1433 DOMAIN\Account

DOMAIN\Accountは、SQL Serverが使用するサービスアカウントの名前です。

SQL Serverが名前付きインスタンスを使用する場合、SETSPNコマンドは次のようになります。

SETSPN -A MSSQLSvc/MASSQL.abc.com:1433 DOMAIN\Account 
 SETSPN -A MSSQLSvc/MASSQL:1433 DOMAIN\Account 
 SETSPN -A MSSQLSvc/MASSQL.abc.com:INSTANCENAME DOMAIN \アカウント
 SETSPN -A MSSQLSvc/MASSQL:INSTANCENAME DOMAIN\Account
4
Max Vernon

SQL Server SPNは、コンピューターアカウント自体には設定されていませんではなく、SQL Serverが実行されているアカウントに設定されています。サービスアカウントにSPNを作成する権限がない場合は、SQL Serverサービス用に2つのSPNを作成する必要があります。次の例では、デフォルトのポート1433を使用することを想定しています。

SetSPN -s "MSSQLSvc/<FQDN_SERVERNAME>" "<DOMAIN>\<SERVICE_ACCOUNT_NAME>"
SetSPN -s "MSSQLSvc/<FQDN_SERVERNAME>:1433" "<DOMAIN>\<SERVICE_ACCOUNT_NAME>"

Kerberos接続のサービスプリンシパル名の登録 を参照してください。

それらがすでにそこにあるかどうかを確認するには:

SetSPN -L ServiceAccountName

しかし、あなたはより大きな問題を抱えているようです。ドメイン管理者アカウントで実行するようにSQL Serverを構成した場合は、SPNを作成する権限が必要です。

3
Tony Hinkle

同じエラーが発生し、すぐに修正されました。

私は仮想サーバー環境で作業していましたが、Power Shellを使用してSQLスクリプトを実行していました。私の場合、RDP接続を切断して仮想サーバーに再接続しただけで、エラーは消えました。

0

Microsoftの SQL ServerのKerberos構成マネージャー は、この問題をすばやく診断して修正するのに役立ちます。

これは読むのに良い話です: http://houseofbrick.com/Microsoft-made-an-easy-button-for-spn-and-double-hop-issues/

0
Julio Nobre