2010-06-10 58 views
2

当SQL批处理返回来自例如多个消息的多条消息时。打印语句,那么我只能使用ADO连接的Errors集合检索第一个。我如何获得剩余的消息?如何使用ADO从查询中检索所有错误和消息

如果我运行此脚本:

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 

然后我只得到 “富” 回来了,从来没有 “酒吧” 或 “XYZ”。

有没有办法得到剩余的消息?

回答

6

我想出了我自己的想法。

这工作:

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 
+1

我知道我的复活死去很久的线程,但是这是非常有帮助我。我不得不更新一个糟糕的传统VbScript,它将数据提供给SQL数据库,即使我陷入了'Err'对象,我从来没有看到任何错误。看起来我不得不将这种错误检查添加到我的SQL命令中。谢谢! – 2017-07-11 15:53:43

相关问题