Forums Neueste Beiträge
 

SQLDMO - "(local") vs "HostName"

19/10/2008 - 14:56 von Josef Morlo | Report spam
SQL Server 2000 (Dev.)

Hallo,

worum's geht:

Ich lese mir mit SQLDMO.Application, .ListAvailableSQLServers die
verfügbaren Server aus. Funktioniert auch soweit.

Ich kriege anstelle des Namens der Standardinstanz allerdings nur (local)".
Muss ich, um deren Namen zu bekommen, den Umweg über SQLDMO.SQLServer
gehen, also in etwa so:

Dim oSQLServer As SQLDMO.SQLServer
Set oSQLServer = New SQLDMO.SQLServer
Call oSQLServer.Connect("(local);Trusted_Connection=Yes")
strName = oSQLServer.HostName

Das funktioniert zwar auch, scheint mir aber reichlich umstàndlich.
Wenn ich's dagegen so probiere, kriege ich VB-Fehler 91:

Set oApp = New SQLDMO.Application
debug.print oApp.SQLServers("local").HostName

Was mache ich dabei falsch, und gibt es überhaupt eine Möglichkeit, beides
mit einer SQLDMO-Instanz zu erledigen?

Danke und Gruß

Josef Morlo
 

Lesen sie die antworten

#1 Elmar Boye
19/10/2008 - 18:50 | Warnen spam
Hallo Josef,

"Josef Morlo" schrieb ...
Ich lese mir mit SQLDMO.Application, .ListAvailableSQLServers die
verfügbaren Server aus. Funktioniert auch soweit.

Ich kriege anstelle des Namens der Standardinstanz allerdings nur
(local)".



Für die Angabe der lokalen Instanz muß immer (local) - also in Klammern -
verwendet werden, ohne die Klammern wird es als Hostname bzw. Netbios
Name interpretiert.
Für benannte Instanzen wàre es dann (local)\Instanzname

Muss ich, um deren Namen zu bekommen, den Umweg über SQLDMO.SQLServer
gehen, also in etwa so:



Du kannst mit (local) wie mit dem Rechnernamen arbeiten.
Die Kenntnis Name ist nicht erforderlich um eine Verbindung aufzubauen,
das gilt auch für die Netzwerbibliotheken wie ADO(.NET)/ODBC/DB-Library.

Dim oSQLServer As SQLDMO.SQLServer
Set oSQLServer = New SQLDMO.SQLServer
Call oSQLServer.Connect("(local);Trusted_Connection=Yes")
strName = oSQLServer.HostName

Das funktioniert zwar auch, scheint mir aber reichlich umstàndlich.



Wozu brauchst Du das überhaupt?
Wenn Du mit SQLDMO mehr als nur die Server auflisten willst,
so braucht Du eine Verbindung wie oben.
Denn erst darüber wird die Verbindung aufgebaut und der SQL Server
zugàngiglich - denn damit werden Deine Rechte festgelegt.

Hostname wiederum liefert Dir "nur" den Namen des lokalen Rechners
und entspricht der T-SQL-Variable @@HOSTNAME
(und hat normalerweise nur selten Nàhrwert)

Gruß Elmar

Ähnliche fragen