Intercettare creazione connessione server sqlexpres

venerdì 03 aprile 2009 - 14.35

Nick79 Profilo | Newbie

ciao a tutti, ho creato questa piccola sub nella speranza di intercettare la creazione della connesione al server sql, ma purtroppo non va, mi restituisce un errore credo di "sistema"

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

la mia sub è questa:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

ecco perchè mi serve tutto questo:
ho un file ini dove sono elencati i vari serversql "papabili" (che andranno a popolarmi la variabile server che vedete nella sub) dai quali andare a recuperare i dati aggiornati, quidni se non trova un server passa al secondo e così via...purtroppo non riesco ad intercetatre quell'errore

qualche suggerimento?

Grazie
ciao
Nick

freeteo Profilo | Guru

Ciao,
attento che quando crei la connessione, non viene aperta, quindi non ti da errore,quindi dentro al try-catch, devi invocare il metodo "Open" della variabile dbconnection che hai creato, per avere l'errore di accesso.

Cmq sia, io userei il metodo apposito di sql che ti fa il discovery delle istanze disponibili della rete in quel momento, quindi senza preoccuparmi di tentare la connessione per vedere se è disponibile, puoi usare "SqlDataSourceEnumerator.Instance.GetDataSources()" per avere una lista di istanze.

Io avevo usato un codice di questo tipo su una combo, quando l'utente la apre (evento "DropDown") viene popolata con il nome delle istanze disponibili:
private void sqlComboBox_DropDown(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { sqlComboBox.DataSource = SqlDataSourceEnumerator.Instance.GetDataSources(); sqlComboBox.DisplayMember = "ServerName"; } catch { } Cursor.Current = Cursors.Default; }

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

Nick79 Profilo | Newbie

Potrebbe anche andare, nel senso che dalla lsita confronto con il mio ini e il primo server "UP" mi linko a quello.
fatto sta che se il server c'è ma non ha la il db dovrei crearlo (lancio uno script sql)

Esempio pratico:
non trovo nessun server in rete mi creo la base dati vuota in locale

cqm è già qualcosa, grazie mille ora vedo di applicarmi :)

ciao
Nick

Nick79 Profilo | Newbie

...forse vado un po' OT.. ma usando il codice sopra suggerito sono un po' in difficoltà perchè l'oggeto SqlDataSourceEnumerator non viene riconosciuto (uso vb 2008 express)

qualche suggerimento?
scusate la domanda magari banale, ma sono molto newbie in vb
Ciao
Nick

R3GM4ST3R Profilo | Junior Member

Hai fatto la import di
System.Data.Sql


Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

Nick79 Profilo | Newbie

eureka!
avevo in import la sqlclient.. non ci ho pensato che poteva dipednere da un'altra libreria :)

grazie!!
Ciao
Nick
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5