2017-04-21 41 views
2

AD DCでもあるWindows Server 2012 R2にSQL Server 2014がインストールされています。SetSPNでアカウントを見つけることができません

The target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server) 

だから、同じ問題で他の記事を以下、私がダウンロードしたケルベロス:私は同じローカルドメイン上のクライアントのデスクトップからSQL Server Management Studioを(SSMS)を使用して接続しようとすると、私は、このエラーメッセージが表示されました2つのMisplaced SPNが見つかりました。次のようにケルベロス構成マネージャによって提案されたSPNスクリプトコマンドは、次のとおりです。

SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$" 
SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$" 

をしかし、私は、サーバー上のCMDの最初のコマンドを実行しようとしたとき、(1「れるSetSPNは、-d」)、私はこのエラーを得ました:

FindDomainForAccount: Call to DsGetDcNameWithAccountW failed with return value 0x0000054B 
Unable to locate account SERVERNAME$ 

ここから先に進む方法がわかりません。周りのグーグルが正しい答えを明らかにしていない。助けてください。質問は以下のとおりです。

1)間違ったSPNが原因ですか?もしそうなら、修正する方法は?

2)そうでない場合は、Windows認証を使用して、同じローカルドメイン上のクライアントデスクトップからSQL Serverに接続するにはどうすればよいですか。

+0

SQLログインを使用してアクセスする際に問題がありますか?ローカルにアクセスするには問題がありますか?そのWindowsボックスにRDP、SSMS、Windows認証を開いて、オプションの変更ネットワークプロトコルをデフォルトからtcpに変更しますか? – Wendy

+0

@Wendyローカルにアクセスするのは問題ありません。私はSSMSをサーバー自体にインストールしています。クライアントのWindowsデスクトップでSQLログイン(ユーザー名/パスワード)を使用してログインしようとすると、単に「SERVERNAMEに接続できません」と表示されます。ユーザー 'xxx'のログインに失敗しました。 SSMSをローカルで使用し、サーバー名を右クリックすると、[プロパティ] - > [接続:このサーバーへのリモート接続を許可する]が有効になります。 SQL Serverの構成マネージャでは、SQL Serverのネットワーク構成 - > SERVERNAMEのProtocalsでTCP/IPが有効になっています。他に何を試してください。どうも! – Zhang18

+0

ローカルにアクセスする場合、SSMSはTCPを使用してSQL Serverに接続していません。 'サーバーに接続'にはオプション>>ボタンがあり、ネットワークプロトコルをデフォルトからtcpに変更します。あなたが入ることができるなら、ユーザー 'xxx'をチェックすることは、それを追加せずにアクセス権を与えている場合にアクセス権を持つかどうかを確認し、リモートからこのユーザーIDアクセスを使用してみてください。 – Wendy

答えて

3

:私はそれが実際に次のようだったので、私のテスト環境を難読化する必要はありません。

SetSPN -s MSSQLSvc/dc1.dev.local DEV\dc1$ 

...と結果internal\SERVERNAME$アカウントはではなく、が存在します。 internal.domain.com\SERVERNAME$で、DOMAIN\SERVERNAME$と同じアカウントである必要があります。DOMAINは、internal.domain.comのWindows 2000以前の名前です。最初の問題を解決するには、いくつかのステップが実行されるthis post、から来たThe target principal name is incorrect. Cannot generate SSPI context. (Microsoft SQL Server)

:結果

見当違い SPNのKerberos構成マネージャによって識別されるように、最初のエラーメッセージの根本的な原因ではありませんクライアント側とサーバー側の両方で問題を解決してください。

1

Active Directoryドメインに参加しているマシンからスクリプトを実行し、マシンのDNSがADに正しく解決されていることを確認してください。 SERVERNAME $を検索するには、照会するActive Directoryドメインコントローラの場所をDNSに問い合わせる必要があります。 SPNスクリプトも間違っています。

  1. 引用符を取り除きます。特に、囲むスペースがないため、この文脈では不要です。
  2. 最初のコマンドを実行するには、ドメインにログインしてください。にログインしてください。 2番目のコマンドは、DOMAINにログインして実行されます。

SetSPN -d "MSSQLSvc/SERVERNAME.internal.domain.com" "internal\SERVERNAME$" 
SetSPN -s "MSSQLSvc/SERVERNAME.internal.domain.com" "DOMAIN\SERVERNAME$" 

この代わりにされている必要があります:

は私がの提案、スクリプトが考える

SetSPN -d MSSQLSvc/SERVERNAME.internal.domain.com internal\SERVERNAME$ 
SetSPN -s MSSQLSvc/SERVERNAME.internal.domain.com DOMAIN\SERVERNAME$ 

は、私はちょうど私の環境の2行目をテストし、それが働きました。 @ T-ヘロンの答えに私の最後のコメントパー

Checking domain DC=dev,DC=local 

    Registering ServicePrincipalNames for CN=DC1,OU=Domain Controllers,DC=dev,DC=local 
      MSSQLSvc/dc1.dev.local 
    Updated object 

    C:\> 
+0

実際にKeberos Configuration ManagerをSQL Server上でローカルに実行しています(これはAD DCでもありませんが理想的ではありませんが、これは設定したものです)。 – Zhang18

+0

カンマは、タイプミスで修正されました。私はドメイン名の難読化の一部を削除しました。第1レベルは実際には「内部」であり、疑わしいコマンド(-dを使用するコマンド)はドメイン名(「奇妙な部分」)として「内部」を持っています。 2番目のコマンド(-s)は常に正常に実行されていましたが問題はありませんでしたが、それだけで私の間違ったSPN *問題は解決されませんでした... – Zhang18

+0

それに応じて答えを編集しました。最初のコマンドを実行するには、* internal *ドメインにログインしていることを確認してください。 –

関連する問題