【问题标题】:How to retrieve all errors and messages from a query using ADO如何使用 ADO 从查询中检索所有错误和消息
【发布时间】:2021-04-14 14:31:51
【问题描述】:

当一个 SQL 批处理返回多个消息时,例如print 语句,那么我只能使用 ADO 连接的 Errors 集合检索第一个语句。如何获取其余消息?

如果我运行这个脚本:

Option Explicit
Dim conn
Set conn = CreateObject("ADODB.Connection")
conn.Provider = "SQLOLEDB"
conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=Master"
conn.Open

conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)")

Dim error
For Each error in conn.Errors
    MsgBox error.Description
Next

然后我只得到“Foo”,而不是“Bar”或“xyz”。

有没有办法获取剩余的消息?

【问题讨论】:

    标签: sql-server vbscript ado


    【解决方案1】:

    我自己想出来的。

    这行得通:

    Option Explicit
    Dim conn
    Set conn = CreateObject("ADODB.Connection")
    conn.Provider = "SQLOLEDB"
    conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=Master"
    conn.Open
    
    Dim rs
    Set rs = conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)")
    
    Dim error
    While not (rs is nothing)
        For Each error in conn.Errors
            MsgBox error.Description
        Next
        Set rs = rs.NextRecordSet
    Wend
    

    【讨论】:

    • 我知道我正在恢复一个早已死去的线程,但这对我很有帮助。我不得不更新一个写得很糟糕的遗留 VbScript,它将数据输入 SQL 数据库,即使我捕获了 Err 对象,我也从未看到任何错误。看起来我也必须将这种错误检查添加到我的 SQL 命令中。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多