我们在 WinForms 程序中使用以下 SQL 查询很长时间没有问题,直到一些最终用户升级到 Windows 10。
他们突然得到异常:“ERROR [22007] [Microsoft][SQL Server Native Client 11.0][SQL Server]varchar 数据类型到 datetime 数据类型的转换导致值超出范围。”
这个错误之前已经在这里发布过,但我没有找到任何与 Windows 10 升级相关的帖子。
该查询针对 SQL Server 2012,使用 Native Client 11。它适用于 Windows 7 和 8,但在 Windows 10 中引发异常:
SELECT DISTINCT tblEmployee.EmployeeID, tblEmployee.Lastname, (COALESCE(tblEmployee.Firstname, '') + ' (' + COALESCE(tblEmployee.EmployeeIDText, '') +')' ) AS Firstname
FROM tblEmployee
LEFT JOIN tblAssignmentService ON tblEmployee.EmployeeID = tblAssignmentService.EmployeeID
WHERE tblAssignmentService.ServiceDate >= '2015-08-31 00.00.00'
AND tblAssignmentService.ServiceDate < '2015-09-07 00.00.00'
ORDER BY tblEmployee.Lastname;
唯一使用 DateTime 字段的地方是在 Where 子句中,并且该查询对具有 Windows 8 客户端的同一个数据库工作正常。两个客户端都运行 Einglish Windows 版本。另一个有趣的观察是,从 Windows 10 机器上的 Microsoft SQL Management Studio 接受查询。但不是通过本机客户端。过滤器中使用的日期是通过 GUI 在我们的程序中创建的。
是否有人在 Windows 10 上使用 Native Client 时遇到过奇怪的事情,或者是否有人对如何解决此问题提出建议?