簡體   English   中英

從 SQL Server 2019 返回的 VBA/ADO 中的值不可讀

[英]Unreadable value returned in VBA/ADO from 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 年有這個問題。

什么可能導致這種情況?

SQL Server 2012 版本的sp_get_composite_job_info (未記錄為@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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM