【问题标题】:DBCC CheckDb - get sql messages in VB.NETDBCC CheckDb - 在 VB.NET 中获取 sql 消息
【发布时间】:2017-12-12 07:33:59
【问题描述】:

我正在使用此代码检查我的数据库是否有错误:

Dim cmd As New SqlCommand("DBCC CHECKDB (offpoDb) WITH TABLERESULTS", con)
cmd.ExecuteNonQuery()

但是,你看,这个命令只生成 SQL 消息。

有没有办法在 .net 中检索消息?
我可以在MessageBox 中显示消息吗?

我研究过InfoMessage,但我仍然不明白如何应用它/使用它。

【问题讨论】:

    标签: sql-server vb.net dbcc


    【解决方案1】:

    使用SqlDataReader 而不是ExecuteNonQuery 来获取TABLERESULTS 返回的记录集:

    Dim strBuilder As New System.Text.StringBuilder
    Using cmd As New SqlClient.SqlCommand("DBCC CHECKDB (offpoDb) WITH TABLERESULTS", con)
        Dim reader As SqlClient.SqlDataReader
        reader = cmd.ExecuteReader
    
        While reader.Read
            strBuilder.AppendLine(CStr(reader("MessageText")))
        End While
    
        reader.Close()
    End Using
    
    MessageBox.Show(strBuilder.ToString)
    

    要查看返回的所有列,请在 SQL Server Management Studio 中执行查询。

    如果您更喜欢使用InfoMessage-event,请添加一个处理程序并使用它,如下所示:

    Sub MyMethod()
        Using con As New SqlClient.SqlConnection("<yourConnectionString>")
            con.Open()
    
            AddHandler con.InfoMessage, AddressOf InfoMessage
    
            Using cmd As New SqlClient.SqlCommand("DBCC CHECKDB (offpoDb)", con)
                cmd.ExecuteNonQuery()
            End Using
    
            con.Close()
        End Using
    End Sub
    
    Private Sub InfoMessage(sender As Object, e As SqlClient.SqlInfoMessageEventArgs)
        MessageBox.Show(e.Message)
    End Sub
    

    【讨论】:

    • 嘿,我的代码是检查 db fot 错误的完美解决方案吗?有更好的解决方案吗??
    • @zackraiyan 我已经编辑了我的答案并添加了一个带有InfoMessage-event 的示例。可能还有其他或更好的解决方案。您必须决定哪一个是最适合您的解决方案。
    • 谢谢...但我对第一个解决方案没问题...你能帮我吗here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 2021-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多