Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Evento InfoMessage di una connessione
Forum - C# / VB.NET - Evento InfoMessage di una connessione

Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 11:44
Domenica, 11/12/2011
Salve, qualcuno ha mai usato l'evento in oggetto per tracciare in tempo reale gli eventi generati dal SQL Server ?

Codice sorgente - presumibilmente VB.NET

  1. ....
  2.   Dim cn As New SqlConnection
  3.   AddHandler cn.InfoMessage, AddressOf cn_InfoMessage
  4.   ....
  5.  
  6.   Private Sub cn_InfoMessage(ByVal sender As Object, ByVal e As System.Data.SqlClient.SqlInfoMessageEventArgs)
  7.  
  8.     For Each err As System.Data.SqlClient.SqlError In e.Errors
  9.       Application.DoEvents()
  10.       Debug.WriteLine(e.Message)
  11.     Next
  12.  
  13.   End Sub



Vorrei usarlo per tenere traccia dell'avanzamento percentuale di un backup database di sql server come avviene nel SQL Server Management Studio, una cosa del genere:
...
10 percento elaborato.
20 percento elaborato.
30 percento elaborato.
40 percento elaborato.
50 percento elaborato.
60 percento elaborato.
70 percento elaborato.
...

Nel SQL Server Management Studio ogni avanzamento viene visualizzato man mano che procede il backup. Nel codice che cattura l'evento InfoMessage non avviene la stessa cosa, infatti l'evento viene invocato solo alla fine dell'operazione con tutto il messaggio stringa degli avanzamenti.
Ma è chiaro che una cosa così non serve allo scopo.

Qualche idea ?

Ultima modifica effettuata da ampeg il 11/12/2011 alle 11:55
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 12:54
Domenica, 11/12/2011
Come lanci il backup?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 13:33
Domenica, 11/12/2011
il backup lo faccio tramite t-sql e passo il testo ad un SqlCommand

comunque credo d'aver risolto, è due ore che sto smanettando con google :d

in pratica bastava impostare a True la proprietà FireInfoMessageEventOnUserErrors della connection


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:34
Domenica, 11/12/2011
Penso che basti usare

stats = 1

nel comando del backup


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
ampeg (Normal User)
Pro


Messaggi: 124
Iscritto: 21/04/2011

Segnala al moderatore
Postato alle 13:47
Domenica, 11/12/2011
stats indica l'ammontare dell'avanzamento percentuale, ovvero se messo a 1 il messaggio di uscita avanza di un'unità percentuale per volta, solitamente lo tengo a 10 quindi il messaggio avanza ogni 10 %

ho provato ad impostare a True la proprietà FireInfoMessageEventOnUserErrors della connection e funziona come vorrei

PM Quote