2012-04-30 240 views
2

我剛剛完成了在AD中使用SPN註冊我們的SQL Server 2008 R2。 我可以在使用經由SQLNCLI10.1 OLEDB使用以下關鍵字進行連接:如何使用SPN通過SSMS連接

Server SPN=MSSQLSvc/server.domain.local 

和一旦連接,以下查詢驗證正在使用的Kerberos:

SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@spid; 

結果:

KERBEROS 

不過,我無法弄清楚,或者搜索互聯網上的信息,使用SPN內SSMS的連接。將建議的關鍵字添加到「其他連接參數」只是導致

Keyword not supported: 'serverspn' 
Keyword not supported: 'server spn' 

可以使用SPN在SSMS內進行連接嗎?如果我這樣做沒有指定SPN,測試查詢返回:

NTLM 

回答

0

您用什麼命令創建SPN?

你應該有2個服務的SPNs。 1代表server.domain.local,1代表1433端口(或者你的服務使用的任何端口)。

下面是http://msdn.microsoft.com/en-us/library/ms191153.aspx例子:

setspn -A MSSQLSvc/myhost.redmond.microsoft.com:1433 accountname 
setspn –A MSSQLSvc/myhost.redmond.microsoft.com accountname 

一旦結節的創建,然後Windows身份驗證應該是所有你需要得到Kerberos的。

爲了驗證什麼的SPN創建您可以使用以下方法:

setspn -l accountname 

此外,如果服務帳戶具有寫的servicePrincipalName和讀取的servicePrincipalName權限,它會自動註冊在啓動時的SPN。

見克林特的博客更多的信息:http://clintboessen.blogspot.com/2010/02/dynamically-set-spns-for-sql-service.html

+0

創建SPN的命令是'setspn -A MSSQLSvc/server.domain.local SQLDatabase'。我沒有設置特定的TCP端口,希望不會限制使用SPN到TCPIP協議。我將通過向帳戶授予SPN權限來嘗試在博文中討論的自動註冊,並向後報告。謝謝 – TKInker

+0

我刪除了手動設置的SPN:'setspn -D MSSQLSvc/server.domain.local SQLDatabase',使用ASDI Edit設置讀/寫servicePrincipalName'權限,如Clint博客文章中所述,並重新啓動服務器。我可以看到現在自動設置的SPN:'setspn -T * -Q */server.domain.local' CN = SQL引擎帳號,OU =服務帳號,OU =辦公網絡,DC = DOMAIN,DC =本地''' MSSQLSvc/SERVER.DOMAIN.LOCAL'然而,沒有任何改變。數據庫服務在域帳戶下運行,並且我作爲系統管理員還與域帳戶連接。我還缺少什麼? – TKInker

+0

有可能存在重複的SPN(即與服務和不同的帳戶有關聯的SPN)。運行setspn -x。這將列出重複的spns。如果有任何欺騙,請使用setspn -d將其刪除。此外,在命令提示符下,運行klist以驗證您是否擁有端口1433 kerberos票證。 – brian

0

每當你得到NTLM這意味着SPN沒有正確註冊或賬戶,一個是不屬於域名。否則,你應該總是得到一個KERBEROS連接。有幾件事需要您確保始終獲得KERBEROS連接。

  • 確保登錄存在於運行SQL Server的域上。
  • 確保登錄對AD足夠燙髮,登錄使用SQL服務。
  • 手動創建SPN​​。該命令將在添加SPN之前檢查重複項。
  • 上述步驟將確保當您重新啓動SQL Server的SPN註冊

要驗證註冊成功:

  • 可以在SSMS Management -> SQL Server Logs -> Current檢查。
  • 你也可以在CMD setspn -L MSSQLSvc/<domain.com> <login>

運行以下命令你已經驗證服務器SPN註冊成功後,您可以使用域帳戶登錄,運行測試命令。之後你應該總是得到KERBEROS。