症状
假设您使用的是 Microsoft SQL Server 2014。 尝试在本机编译的存储过程中使用datepart (工作日) 时,出现了访问冲突,连接已结束。 此外,你会收到以下错误:
当前命令出现严重错误。 应丢弃结果(如果有)。
原因
出现此问题的原因是 SQL Server 2014 中的缺陷。将 datepart 与 char 参数结合使用将引入指向 datetimeoffset的隐式转换。 本机存储过程不支持 datetimeoffset。
解决方案
应用此修补程序后,SQL Server 将对引入新逻辑以将 char 参数转换为 datetime2 进行更改,以将本地存储过程转换为datetime2 ,并对常规存储过程和常量折叠执行 datetimeoffset 转换。在 SQL Server 的以下累积更新中,此问题首先已修复。
SQL Server 2014 的累积更新1 /en-us/help/2931693
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
解决方法
若要解决此问题,请将其显式转换为受支持的datetime 类型。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。