症状
请考虑以下情况:
-
您在 Microsoft SQL Server 2012 或 SQL Server 2014 中有一个 包含的数据库。
-
应用程序尝试通过启用 连接池来连接到包含的数据库。
-
应用程序使用 SQL Server 身份验证。
在这种情况下,应用程序可能无法连接到数据库。 此外,你还可以在 SQL Server 错误日志中找到类似于以下内容的错误:
日期 时间 登录错误:18456,严重性:14,状态:5。用户 "SID" 的日期时间登录登录失败。 原因:找不到与提供的名称匹配的登录 [客户端:]日期时间 spid# 错误:18056,严重性:20,状态:5。日期时间 spid# 客户端无法重复使用 spid #的会话,该会话已重置为连接池。 失败 ID 为 #。 此错误可能是由于以前的操作失败导致的。 检查错误日志中是否出现此错误消息之前的失败操作。
注意 第一次连接到包含的数据库时,不会出现此问题。 但是,所有后续尝试都将出现此问题。
解决方案
在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 2012 SP1 的累积更新7 /en-us/help/2894115
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
更多信息
此更新还修复了以下内置函数(而不是用户名)返回用户 SID 的另一个问题:
-
SUSER_SNAME
-
SUSER_NAME
-
SYSTEM_USER
注意 此更新可确保这些函数始终返回用户名,无论是否使用包含的数据库。
参考
请参阅 Microsoft 用于描述软件更新的 术语 。