2017-12-12 5 views
1

でSQLメッセージを取得:DBCC CHECKDB - 私はエラーのために自分のデータベースをチェックするために、このコードを使用していVB.NET

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

しかし、uは見、このコマンドは、SQLメッセージを生成します。

.netでメッセージを取得する方法はありますか?
MessageBoxにメッセージを表示できますか?

私はInfoMessageを勉強しましたが、まだそれをどのように適用するかを理解していません。

答えて

0

TABLERESULTSによって返されたレコードを取得する代わりにExecuteNonQuerySqlDataReaderを使用します。SQL Server Management Studioでクエリを実行し、返されたすべての列を表示するには

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) 

を。

あなたが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 
+0

ねえ、私のコードは、DB FOTエラーをチェックするための完璧なソリューションですか?より良い解決策はありますか? –

+0

@ zackraiyan私は自分の答えを編集し、 'InfoMessage'イベントの例を追加しました。他にもより良い解決策があるかもしれません。あなたはどれがあなたにとって完璧な解決策であるかを判断する必要があります。 – MatSnow

+0

ありがとう...しかし、私は第一の解決策で大丈夫です...あなたが私を助けることができます[ここ](https://stackoverflow.com/questions/47774263/dbcc-checkdb-any-ways-to-detect-errors-vb -ネット) –

関連する問題