首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server MaxTokenSize 配置指南:解決大型 AD 環境下 Kerberos 認證失敗問題

     編輯:關於SqlServer

問題現象

  • 大型企業(AD 用戶/組 > 70,000),用戶屬於 > 100 個組(含巢狀)。
  • Windows 整合認證連接 SQL Server 失敗,報錯:

MSSQL: "Login failed for user ''. The user is not associated with a trusted SQL Server connection."
Kerberos: "The Kerberos packet size exceeds the maximum allowed size."

根因分析

  • Kerberos Token 包含用戶所有 SID(組成員資格)。
  • 默認 MaxTokenSize = 12,000 字節,大型 AD 環境 Token 超限 → 截斷/拒絕 → 認證失敗。

解決方案:調整註冊表 MaxTokenSize

1. 計算所需大小

使用 Microsoft TokenSZ 工具:


tokensz /compute_tokensize /user:Administrator /domain:CORP.COM /password:xxx

輸出 Required MaxTokenSize = 45000(示例)。

2. 修改註冊表(SQL Server 服務賬號上下文)


路徑:HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
值:MaxTokenSize (DWORD)
數據:計算值 + 20% 冗餘(如 54000 → 十六進制 0xD2F8)

必須在所有域控制器、SQL Server 服務器、客戶端機器上設置,重啟生效。

3. 驗證生效

  • 重新連接 SQL Server,錯誤消失。
  • 事件日誌無 Kerberos/MSSQL 錯誤。

最佳實踐與避坑

結語

MaxTokenSize 是大型 AD 環境連接 SQL Server 的「隱形門檻」。通過 TokenSZ 量化需求、GPO 統一分發、持續監控,可徹底消除 Kerberos 認證失敗風險,保障 Windows 整合認證的穩定可用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目建議
組策略通過 GPO 下發 MaxTokenSize,確保全域一致
監控定期抽樣 TokenSZ,隨組織變化調整
替代方案SQL 認證(sa/應用賬號)繞過 Kerberos,但失去集中身份管理優勢
最小權限定期清理冗餘組成員資格,從源頭控制 Token 體積