Per Lorenzo....conoscere il nome dei server con SQL installato.

martedì 06 giugno 2006 - 09.09

sal21 Profilo | Junior Member

Ciao Papà, dopo vari tentativi ho fatto qestu due macro. La prima funziona perfettamente e mi lista in un foglio di Excel tutti i server sql connessi. La seconda che ho creato per ssapere i nome dei database funziona solo se inserisco nella linea sottostante il nome del mio server montato sul mio pc, in questo caso "local". Ma se inserisco un altro nome dei server appaena rintracciati la macro mi ìda errore "440" Errore di automazione.
In effetti a me non intressa aprire e modificare i vari database sui server non locali, ma solo sapere il nome del database... si puo fare qualcosa?
Grazie.
objSQLServer.Connect "(LOCAL)"


my code:

Sub TEST_SQL()
Dim TEST As String
Dim RIGA As String

Set sqlApp = CreateObject("SQLDMO.Application")

Set serverList = sqlApp.ListAvailableSQLServers

numServers = serverList.Count
RIGA = 2

For I = 1 To numServers

TEST = serverList(I)

Range("A" + RIGA) = TEST
RIGA = RIGA + 1
Next

Set sqlApp = Nothing

End Sub
Sub DATABASE_SQL()
Dim TESTDBSQL As String

Const DisplaySystemDatabases = False

Set objSQLServer = CreateObject("SQLDMO.SQLServer")
objSQLServer.LoginSecure = True

objSQLServer.Connect "(LOCAL)"


For I = 1 To objSQLServer.Databases.Count
If (Not objSQLServer.Databases(I).SystemObject) Or DisplaySystemDatabases Then
TESTDBSQL = objSQLServer.Databases(I).name
End If
Next

End Sub

lbenaglia Profilo | Guru

>La seconda che ho creato per ssapere i
>nome dei database funziona solo se inserisco nella linea sottostante
>il nome del mio server montato sul mio pc, in questo caso "local".
>Ma se inserisco un altro nome dei server appaena rintracciati
>la macro mi ìda errore "440" Errore di automazione.

>objSQLServer.LoginSecure = True

Per recuperare il nome dei database presenti in una istanza SQL Server devi autenticarti.
La riga di codice evidenziata sopra, effettua l'autenticazione all'istanza specificata utilizzando la Windows Authentication, ovvero utilizzando il SID dell'account Windows digitato in fase di logon al sistema.
Se nella tua LAN non c'è alcun Domain Controller ed il tuo account windows non è mappato come login SQL Server su ogni singola istanza, l'autenticazione fallirà.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

sal21 Profilo | Junior Member

in effetti non so se sono mappato come utente SQL...quindi se ho ben capito non potro mai sapere il nome dei da depositati su un server non LOCAL?

lbenaglia Profilo | Guru

>in effetti non so se sono mappato come utente SQL...quindi se
>ho ben capito non potro mai sapere il nome dei da depositati
>su un server non LOCAL?

Boh, dipende.
Se le istanze sono configurate per utilizzare anche la SQL Authentication potresti utilizzare una login SQL amministrativa (come "sa") però oltre a conoscere la password, devi verificare che sia uguale per tutte le istanze della tua LAN.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

sal21 Profilo | Junior Member

ammetendo che sia "SA" come dovrei mofifuicare il secondo scrpit?
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-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5