Entwickler-Ecke
Datenbanken - Netzwerk nach SQL Server scannen
renekr - Di 25.09.07 18:32
Titel: Netzwerk nach SQL Server scannen
Hallo,
Kennt jemand eine Möglichkeit wie ich das Netzwerk ( Intranet ) scannen kann und die Rechnernamen von SQL Servern rausbekomme ev. als Liste ?
Muss nicht nur mit Delphi sein kann auch per SQL CMD!
ene - Mi 26.09.07 07:00
Hi,
wie wärs mit dem Enterprise Manager?
alzaimar - Mi 26.09.07 07:15
Man kann sich die Server auflisten lassen (API-Call). Die Option beinhaltet auch, nur nach MS-SQL-Servern zu suchen.
mexx - Mi 26.09.07 09:38
Es gibt Port-Scanner, die das Netzwerk nach verfügbaren Ports auf anderen Rechner scannen. Der SQL Server benutz/öffnet mit Sicherheit einen Default-Port. Nachdem kannst Du dann mit dem Port-Scanner suchen. Ich kann Dir leider keine Software nennen. Nutze selbst keine Port-Scanner. Halte das für Hacking-Software. Belastet auch nur unnötig den Traffic in einen Netzwerk.
alzaimar - Mi 26.09.07 09:45
@mexx: Klappt nur, wenn der SQL-Server die TCP/IP-Library verwendet, sonst nicht.
Microsoft selbst verwendet die 'NetServerEnum' Funktion mit dem Parameter 'SV_TYP_SQLSERVER'. Einfach mal in die OH schauen
mexx - Mi 26.09.07 09:51
Aha, wieder was gelernt. :zustimm: Ich arbeite primär mit FireBird, daher meine Vermutung mit dem Port. Vielleicht gibt es ein Tool von Mircosoft, was diesen Scan durchführen kann. :lupe:
Fragen mich allerdings, wozu das gut sein soll? Renekr wird wohl ein kleiner Spion sein? :gruebel:
alzaimar - Mi 26.09.07 09:56
Wenn Du z.B. eine SQL-Manager schreiben willst, oder dem Anwender in einem Konfigurationsdialog den SQL-Server auswählen lässt, ist sowas natürlich sehr komfortabel.
mexx hat folgendes geschrieben: |
Vielleicht gibt es ein Tool von Mircosoft, was diesen Scan durchführen kann. |
Jaha, die API-Funktion "NetServerEnum".
Herby99 - Di 09.10.07 12:43
Hallo,
das gleiche Problem hatte ich bis grade ebenfalls, habe folgende Lösung auf Basis von NetServerEnum gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.cmdUpdateClick(Sender: TObject); var read, total: Integer; buf: Pointer; tmpbuf: PSERVER_INFO_100; i: integer; NIL_HANDLE : Integer; begin ComboBox1.Items.BeginUpdate; ComboBox1.Clear; NetServerEnum(nil, 100, buf, -1, read, total, SV_TYPE_SQLSERVER, nil, NIL_HANDLE); tmpbuf := PSERVER_INFO_100(buf); for i:= 1 to read do begin ComboBox1.Items.Add(WideCharToString(tmpbuf^.sv100_name)); inc(tmpbuf); end; ComboBox1.Items.EndUpdate; if ComboBox1.Items.Count > 0 then ComboBox1.ItemIndex := 0; NetApiBufferFree(buf);
end; |
Benötigt wird zudem noch die Unit unetmsg.pas (im Anhang).
Herby99 - Di 09.10.07 14:41
Wo wir grade dabei sind, gibt es eine einfache Möglichkeit, sich alle Datenbanken eines Servers anzeigen zu lassen, falls der Zugriff gewährt wird (z.B. über Windows-Authentifizierung)?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!