Liste der vorhandenen SQL-Server auslesen

Hallo liebe WWWer,

ich sitze gerade an einem Programm das per ADO an einen
MSSQL-Server angebunden ist.
Nun möchte ich eine Anmeldung implementieren die mir die
mir eine Auswahl der vorhandenen SQL-Server die in der
angemeldeten Domain vorhanden sind anzeigen lassen.
Eine schöne einfache Lösung habe ich auch gefunden, leider
hat diese den Nachteil, das die dazugehörige Objektbibliothek
(sqldmo.rll) bei der Installation des Programmes sich
anscheinend falsch in der Registry einträgt.
Jedenfalls bekomme ich dort immer die Fehlermeldung
„Objekterstellung durch AktiveX-Komponente nicht möglich“
(Err.Number 429)
Den Verweis auf diese Objektbibliothek habe ich über
Projekt/Verweise eingefügt und in der Entwicklungsumgebung
funktioniert dieses Verfahren.

Hier noch der Code den ich benutzt habe:

Combo1.Clear
For i = 1 To dmoApplic.ListAvailableSQLServers.Count
Combo1.AddItem dmoApplic.ListAvailableSQLServers(i)
Next

Hat jemand vieleicht einen Vorschlag?

Danke euch im Vorraus

Gruss

Kenchi

Verweis auf ‚Microsoft SQLDMO Object Library‘ setzen (sqldmo.dll).
Folgendes Coding funktioniert bei mir:

Dim objApp As SQLDMO.Application
Dim objNameList As SQLDMO.NameList
Dim l As Long
'
Set objApp = New SQLDMO.Application
Set objNameList = objApp.ListAvailableSQLServers
'
For l = 1 To objNameList.Count
 Debug.Print objNameList.Item(l)
Next l

Ob das ganze noch auf einem anderem PC nach einem Setup funktioniert, kann ich Dir leider nicht sagen.

greets from michL (vienna)

Hallo Michael,

habe deine Version ausprobiert, die deckt sich weitesgehend
mit meiner. Einziger unterschied war das ich die Objekte
nicht expizit deklariert habe.
Ergebnis ist das gleiche wie vorher, in der
Entwicklungsumgebung funktioniert es als Setup-Prg auf
einem anderen Rechner nicht.
Aber danke für deine Mühe.

Gruss
Alessandro

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Alessandro!

Das ist typisch für die SQL-Libraries! Hätte mich auch schon beinahe aufgehängt, weil die Teile nirgendwo anders funktionierten. Einzige Lösung war, SQL-Clienttools auf den Zielrechnern zu installieren!

Da mir das aber zu mühsam wurde, habe ich mein Programm zerteilt und teilweise zentralisiert. Soll heißen, dass ich auf COM/DCOM umgestiegen bin und die Klassen-DLLs für den SQL-Serverzugriff auf einem Transaction-Server laufen ließ.

Einfach den Code, welcher mit SQL-Objekten arbeitet ein eine eigene Klassen schmeißen und daraus einen ActiveX-Dll basteln und als COM-Klassen kompilieren und anschließend am Transactionserver installieren und laufen lassen. Auf den Zielrechnern brauchst Du dann die DLLs nur mehr als Remote regisitrieren und schon ist’s fertig und funktioniert auch.

LG, Stefan.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]