微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 SQL Server 2019

如何解决从 SQL Server 2019

为了在 VBA 应用程序中监视 sql Server 作业,我使用 ADO 从 msdb 数据库运行 sp_get_composite_job_info 存储过程。一旦我在 ADODB.Recordset 中得到结果,我就会检查 current_execution_step 字段。多年来,这在 sql Server 2012 中一直运行良好。

我们刚刚迁移到 sql Server 2019,现在仍然适用于 sql Server 2012 的相同代码为 current_execution_step 字段返回一个不可读的值。

我得到一堆矩形和正方形,而不是“4(步骤名称)”。

如果我在 SSMS 中对 sp_get_composite_job_info 运行相同的调用,我可以在两台服务器上读取 current_execution_step 字段。只有当我尝试在 VBA/ADO 中读取该字段时,它才是胡言乱语。

更糟糕的是,我可以很好地读取同一个记录集中的其他字段。只有这一字段(恰好是我需要阅读的唯一字段)不可读。

我在 VBA 中使用的驱动程序是 ODBC Driver 17 for sql Server。但同样,我对两台服务器使用相同的驱动程序,只有 2019 年有这个问题。

这可能是什么原因造成的?

解决方法

sp_get_composite_job_info 的 SQL Server 2012 版本(@RBarryYoung 提到的未记录)返回 current_execution_step 作为 nvarchar(128),而 SQL Server 2019 返回 nvarchar(MAX)

ADO 不知道 SQL Server 2000 之后引入的 SQL Server 数据类型。尝试安装最新的 MSOLEDBSQL OLE DB 驱动程序(ADO 本身就是 OLE DB)并在连接字符串中指定 DataTypeCompatibility=80。>

,

幸运的是,答案就像回到 OLE 并将提供程序切换到 SQLNCLI11 而不是 SQLOLEDB 一样简单。由于 SQLNCLI11 无所不在,我不必寻找所有可能使用这些应用程序的机器并在其上安装 MSOLEDBSQL。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。