![]() |
MSSQL 2005 Servernamen ermitteln
Hallo Wissende,
Ich steh grad vor einem kleinen Problem und hoffe das ihr mir weiter helfen könnt. Ich suche eine Möglichkeit wie ich alle auf einem PC installierten MSSQL2005 Server ermitteln kann, bzw. den Servernamen ermitteln kann. Ich hab ein Programm wo lokal oder remote auf einen PC zugreift und Werte aus einer Tabelle holt. Nun kann aber sein das auf dem einen PC die SQL2005 Datenbank "DatenbankX","DatenbankY",usw. heißt. Wenn ich also über try and error suche bis ich den richtigen Namen gefunden hab dauert das ewig. Deshalb würde ich gern vorher den Namen ermitteln. Gibts da einen Weg? Gruß Centrii |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "VCL / WinForms / Controls" nach "Datenbanken" verschoben.
Erstmal den Weg in die richtige Sparte... |
Re: MSSQL 2005 Servernamen ermitteln
Meinst Du die Instanz des SQL-Servers (also ein benannter laufender SQL-Server-Dienst, von dem es mehrere geben kann), oder meinst Du die Datenbank, die innerhalb einer solchen Instanz läuft?
Der Servername ist an und für sich der Name des Servers - also der Name der physikalischen (oder virtuellen) Maschine. Edit Nachtrag: Wenn Du die Datenbanken innerhalb einer Instanz meinst, so gibt es die Stored Procedure
SQL-Code:
, die Dir eine Liste aller vorhandenen Datenbanken in der Instanz als Tabelle ausgibt.
sp_databases
|
Re: MSSQL 2005 Servernamen (Instanz) ermitteln
Die Instanz. Wenn ich weiß das es auf dem PC PCName\InstanzX gibt weiß ich auch das es auf dem PC die DatenbankX gibt,
andernfalls PCName\InstanzY, dann muss es DatenbankY sein. Ich mache das im moment über try and error, das geht aber zu lange, weil ich online Werte aus der Datenbank brauch, wo ich leider im Vorfeld keine Instanz habe, nur den PCNamen. Übrigends: Danke für verschieben Phoenix :thumb: die Datenbanken unter der Instanz kann ich mir auch aus der Mastertabelle sysObject holen, das ist nicht das Problem. |
Re: MSSQL 2005 Servernamen ermitteln
Ah, okay. Das Stichwort dazu ist SQL-DMO (Distributed Management Objects).
Das sind eine Hand voll COM-Objekte mit denen Du sowas machen kannst. Auf dem ![]() ![]() |
Re: MSSQL 2005 Servernamen ermitteln
vielen Dank Phoenix, ich hab das mal soweit umgesetzt, leider habe ich noch ein Problemchen
Delphi-Quellcode:
Ich bekomme keine Instanzen zurück, obwohl ich zwei habe ?
var DMOSQL2, Instanzen: OLEVariant;
i : Integer; Instanz: String; begin DMOSQL2:= CreateOleObject('SQLDMO.SQLServer2'); Instanzen := DMOSQL2.ListInstalledInstances('TBE87'); //mein PCName for i:=0 to Instanzen.count do begin Instanz := Instanzen.Item[i]; end; end; |
Re: MSSQL 2005 Servernamen ermitteln
Lokale Firewall installiert? Der Weg über COM ist etwas allergisch bezüglich Firewalls.
Schau mal ob du über die NetServerEnum-Win32API mehr bekommst. |
Re: MSSQL 2005 Servernamen ermitteln
Hallo Ruben,
Syntaxfehler bei der Automation sind eine häufige Fehlerursache:
Delphi-Quellcode:
Freundliche Grüße
var
obj, nl: OLEVariant; i: Integer; begin obj := CreateOleObject('SQLDMO.SQLServer2'); nl := obj.ListInstalledInstances(); for i := 1 to nl.Count do ShowMessage(Format('#%d: "%s"', [i, VarToStr(nl.Item(i))])); end; Edit: NameList is one-based ... |
Re: MSSQL 2005 Servernamen ermitteln
Zitat:
|
Re: MSSQL 2005 Servernamen ermitteln
Da rächt es sich, das Delphi nicht case-sensitive ist ;-)
Aber der Count-1 war der zweite geschossene Bock. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz