2
每个SQL实例的SPN条目应该是什么样的?
我在寻找相互矛盾的信息,以了解如何精确格式化SPN(服务主体名称)以获取正确的Kerberos连接,以及每个SQL实例需要多少连接。 该2017 MS文档包含以下内容: 从SQL Server 2008开始,为了支持TCP / IP,命名管道和共享内存上的Kerberos身份验证,更改了SPN格式。命名实例和默认实例支持的SPN格式如下。 命名实例: MSSQLSvc/FQDN:[port|instancename] 默认实例: MSSQLSvc/FQDN:port|MSSQLSvc/FQDN 新的SPN格式不需要端口号。这意味着不使用端口号的多端口服务器或协议可以使用Kerberos身份验证。 我以最后一段表示我只需要一个条目,即以下一项: 命名实例: MSSQLSvc/sqlbox1.mydomain.org/instance2 默认实例: MSSQLSvc/sqlbox1.mydomain.org 这似乎与该较旧的(2011)MS文档矛盾,不仅与端口号有关,而且与使用的名称有关: 若要创建SPN,可以使用SQL Server的NetBIOS名称或完全限定域名(FQDN)。但是,您必须为NetBIOS名称和FQDN创建一个SPN。 当我查看环境中已经存在的SPN时,会看到各种各样的组合,某些服务器最多包含4个条目: MSSQLSvc/sqlbox1 MSSQLSvc/sqlbox1:1433 MSSQLSvc/sqlbox1.mydomain.org MSSQLSvc/sqlbox1.mydomain.org:1433 甚至MS自己的Kerberos配置管理器似乎都希望生成最后两个版本(具有适当的混淆): 同样,对于现有的命名实例,我看到了一个奇怪的组合,其中一些几乎肯定是无效的: MSSQLSvc/sqlbox1:1522 MSSQLSvc/sqlbox1:instance2 MSSQLSvc/sqlbox1.mydomain.org:1522 MSSQLSvc/sqlbox1.mydomain.org:instance2 MSSQLSvc/sqlbox1.mydomain.org/instance2 MSSQLSvc/sqlbox1.mydomain.org:1522:instance2 因此,如果我仅在环境中使用TCP,那么对于默认实例和命名实例,DSN的实际外观如何? 我应该包括端口吗?还是在端口中包含一个,在端口中包含一个? 仅使用FQDN,还是仅需要Netbios名称的条目?还是仅当我们使用命名管道(不是)时? (对于上下文,我们运行SQL 2005到2014,其中一些是群集的,其他是独立的。连接仅通过TCP,在配置管理器中禁用了命名管道。我们将手动修复/创建这些管道,而不是允许SQL服务帐户在创建时服务器启动。)