
Windows Server 2008 R2 です。
SQL Server 2008 R2 がインストールされています。
MSSQL サービスはローカル システムとして実行されます。
サーバーの FQDN は SQL01.domain.com です。
SQL01 は、domain.com という名前の Active Directory ドメインに参加しています。
以下は setspn の出力です。
C:\> setspn -L sql01
...
MSSQLSvc/SQL01.domain.com:1433
MSSQLSvc/SQL01.domain.com
WSMAN/SQL01.domain.com
WSMAN/SQL01
TERMSRV/SQL01.domain.com
TERMSRV/SQL01
RestrictedKrbHost/SQL01
RestrictedKrbHost/SQL01.domain.com
HOST/SQL01.domain.com
HOST/SQL01
次に、SQL Server Management Studio を起動し、次のように SQL01 に接続します。
次に、次のクエリを実行します。
SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid
結果は NTLM です。なぜ結果が Kerberos ではないのですか? ローカル システム アカウントを使用する場合、SPN は正しいようです。サーバーはクラスター内になく、CNAME を使用していません。
答え1
これは、SQL Server をホストしている同じサーバーから、SQL Server にローカルで接続していたためです。ネットワーク上の別のマシンから接続する場合、使用される認証メカニズムは予想どおり Kerberos です。
SQL Server は、ローカルに接続する場合は常に NTLM を使用します。Kerberos はリモートに接続する場合にのみ使用されます。
この投稿はSQL Server プロトコル ブログは古いものですが、同じことを言っています。
1) SPN が存在する場合、TCP/IP 経由でリモート接続を行うときに Kerberos が使用されます。
2) SPN が存在する場合、XP 上でローカル TCP 接続を行うときに Kerberos が使用されます。
3) WIN 2K3 でローカル接続を行う場合は NTLM が使用されます。
4) NP 接続では NTLM が使用されます。
5) SPN が見つからない場合は、TCP 接続経由で NTLM が使用されます。