Existe um Evento da SqlConnection que retorna todas as mensagens geradas pelo SQL Server que não são interpretadas como Exception. É possível recuperar tais mensagens através da SqlConnection. Para isso podemos utilizar o Evento InfoMessage que retorna isso. Abaixo um exemplo de como utilizá-lo:
Criando a StoredProcedure:
CREATE PROCEDURE InfoMessage AS
Print ‘Disparado pelo InfoMessage’
GO
No Evento Load do Formulário:
Private WithEvents conn As SqlClient.SqlConnection
Private Sub Form1_Load(…) Handles MyBase.Load
conn = New SqlConnection(“…”)
Dim cmd As SqlCommand = New SqlCommand(“InfoMessage”, conn)
cmd.CommandType = CommandType.StoredProcedure
Try
conn.Open()
cmd.ExecuteScalar()
conn.Close()
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
E no Evento InfoMessage da SqlConnection, capturamos a mensagem da StoredProcedure:
Private Sub conn_InfoMessage(ByVal sender As Object, ByVal e _
As System.Data.SqlClient.SqlInfoMessageEventArgs) Handles conn.InfoMessage
MessageBox.Show(e.Message)
End Sub
Com isso, a mensagem que é escrita através do Print do SQL Server, será capturado pelo Evento, e poderá fazer tratamentos no Sistema.