Benutzer mit den meisten Antworten
SQL Browser Dienst meldet nur eine Instanz zurück

Frage
-
Moin,
ich habe in VB6 eine Klasse, die mir die erreichbaren SQL-Server-Instanzen im Netzwerk liefern soll (s.u.).
Nun habe ich leider zwei Server, auf denen mir nur eine 32bit-Instanz angezeigt wird und die gesuchte 64bit-Instanz des SQL Server 2008 R2 nicht.Die gesuchte Instanz ist nicht auf "versteckt" gesetzt.
Hat hierzu jemand eine Idee, woran das liegen könnte?
VG
Reinerhier der Code von clsSQLBrowse:
Option Explicit
' Klasse erstellt von Reiner Wolff
' erstellt am: 20.02.2014
'bekannte Einschränkung:
' findet ausschließlich benannte Instanzen
' Standardinstanzen werden nicht aufgelistet
'
' SQL-Browser-Dienst muss auf dem Zielrechner gestartet sein
' und Port 1434 für den Dienst muss in den Firewalls freigegeben sein
Private WithEvents objWinSock As MSWinsockLib.Winsock
Private RequestString As String
Private ServerName As String
Private ServerInstanz As String
Private tmpServerList As String
Private PauseAbbrechen As Boolean
Public RequestHost As String
'Zeit in Sekunden wie lange auf eine Antwort des Browser-Dienstes gewartet werden soll
'Standard = 1 Sekunde, muss > 0 sein, da ansonsten keine Antworten eintreffen würden
Public WaitingTime As Long
'Liste als Variant deklarieren, damit ein Array zurückgegeben werden kann
Public SQLServerList As Variant
Public Event SQLServerFound(ServerName As String, Instanzname As String, ByRef Cancel As Boolean)
Private Sub Class_Initialize()
' Winsock anlegen
Set objWinSock = frmWinSock.Winsock
'Standard auf Broadcast stellen
RequestHost = "255.255.255.255"
'Zeichenfolge für die Abfrage des BrowserDienstes setzen
RequestString = Chr$(&H2) & Chr$(&H0)
WaitingTime = 1
End Sub
'geändert am:
' 01.12.2014 - W&W - Fehlerabfangroutine eingebaut, damit bei nicht erreichbarem Host die Zeile mit 'SendData' nicht direkt einen Fehler auslöst (zB beim Netzwerk Außerhaus)
Friend Sub Connect()
On Error GoTo Fehler
' Winsock mit Daten füttern
With objWinSock
.RemoteHost = RequestHost
.RemotePort = 1434
.Protocol = sckUDPProtocol
.SendData RequestString
End With
PauseAbbrechen = False
Pause WaitingTime
Rückgabe:
SQLServerList = Split(tmpServerList, ";")
If (objWinSock.State <> StateConstants.sckClosed) Then
' Nein, unbedingt schließen
objWinSock.Close
' nachfolgender Befehl ist wichtig!
DoEvents
End If
Exit Sub
Fehler:
Select Case Err.Number
Case 10014 'ungültiges Argument
'wenn der RequestHost nicht aufgelöst werden kann, tritt dieser Fehler auf.
'd.h. auch, dass der SQL-Server im Netz nicht erreichbar ist
GoTo Rückgabe
Case Else
Err.Raise Err.Number, Err.Source & ". Connect", Err.Description
End Select
End Sub
Private Sub Class_Terminate()
' Wurde ein Winsock-Control angelegt?
If Not (objWinSock Is Nothing) Then
' Ja, ist die Verbindung nicht geschlossen?
If (objWinSock.State <> StateConstants.sckClosed) Then
' Nein, unbedingt schließen
objWinSock.Close
' nachfolgender Befehl ist wichtig!
DoEvents
End If
' Winsock entfernen
Set objWinSock = Nothing
Unload frmWinSock
End If
End Sub
'Private Sub objWinSock_ConnectionRequest(ByVal requestID As Long)
''Hinweis zu Fehler 'Invalid operation at current state'
' If objWinSock.State <> sckClosed Then objWinSock.Close 'closes connection if one is already open
' objWinSock.Accept requestID 'allows new connection
'End Sub
Private Sub objWinSock_DataArrival(ByVal bytesTotal As Long)
Dim MSG As String
Dim Cancel As Boolean
Cancel = False
' Received message from server
objWinSock.GetData MSG, vbString
If MSG Like "*" Then ' Received message from server
ServerName = Split(MSG, ";")(1)
ServerInstanz = Split(MSG, ";")(3)
tmpServerList = tmpServerList & ServerName & "\" & ServerInstanz & ";"
RaiseEvent SQLServerFound(ServerName, ServerInstanz, Cancel)
PauseAbbrechen = Cancel
End If
End Sub
' Hilfsfunktionen
Private Function TimeStamp(Optional ByVal Seconds As Double) As Double
TimeStamp = Int(Now) + (Timer + Seconds) / 86400
End Function
Private Sub Pause(ByVal Seconds As Double)
Dim t As Double
t = TimeStamp(Seconds)
Do Until TimeStamp >= t Or PauseAbbrechen = True
DoEvents
Loop
End Sub
Antworten
-
Am 07.12.2014 schrieb Reiner Wolff:
Am 06.12.2014 schrieb Reiner Wolff:
D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
Du mit deiner Klasse siehst?Das weiß ich nicht, da ich bislang keinen anderen Server dieser Konstellation gefunden habe.
Das solltest Du evtl. testen. Ist Aufwand, aber lässt sich mit Hilfe
der Testversionen sicherlich darstellen.Ja, so einen Test könnte ich bauen, aber gibt es nicht eine einfache Möglichkeit herauszufinden, was der SQL Browser Dienst eigentlich zurückliefert?
Weiß ich nicht. Ich könnte mir nur vorstellen, dass VB6 mit 64-Bit ein
Problem hat. Deshalb ja auch die Frage nach .Net, wenn es dort
funktioniert und im SSMS, solltest Du den Schuldigen gefunden haben.Ich hätte gedacht, ich könnte das über Telnet oder dergl. probieren, wüsste aber nicht, was genau ich da eingeben muss..
Der SQL Browser muss über 1434 TCP und 1434 UDP sprechen können.
Mit dem SQL Server
Management Studio siehst Du alle 32- und 64-Bit Instanzen?Ja, mit dem SSMS sehe ich beide Instanzen.
Es ist sicher das das hier nicht zutrifft?
| 'bekannte Einschränkung:
| ' findet ausschließlich benannte Instanzen
| ' Standardinstanzen werden nicht aufgelistetEs handelt sich bei beiden Installationen und benannte Instanzen.
Von daher ist das Sichergestellt. Ich kenne diese Einschränkung allerdings nicht. Hast Du dazu mal einen Link?Ich auch nicht, las es nur in deinem Code. Deshalb nochmal die
Nachfrage.BTW: Schreibst Du hier mit einem Newsreader oder über den Browser?
Ich habe irgendwann aufgegeben 40Tude an diese Foren anzupassen und komme leider nicht mehr regelmäßig dazu, in den Foren mitzulesen (die wachsende Familie hat da einfach Vorrang). Von daher bemühe ich mich mit den Browsermöglichkeiten klar zu kommen.
Gibt es an der Newsreader-Front für die Forenintegration etwas Neues in den letzten 1,5 Jahren? Denn schön, ist die Browser-Geschichte nicht.Mit Hilfe der NNTP-Bridge von Jochen geht das recht gut. In der Bridge
in den Tools > Advanced Options ein paar kleine Einstellungen
vornehmen, schon funktioniert das einwandfrei.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Dezember 2014 15:00
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Dezember 2014 15:33
-
oder ich eine andere Möglichkeit habe, mir die Rückgaben des SQL-Browsers anzuschauen?
Hallo Reiner,
das ist interessant, das ist das erste Mal das ich sehe, das sich jemand die Mühe gemacht hat, den ganzen UDP Broadcast selbst aus zu programmieren.
Alle anderen verwenden das lieber SQL-DMO => ListAvailableSQLServers Method, das sind nur 2 Codezeilen. Hast Du es damit mal versucht? Kannst Du die Instanz im SSMS Login Dialog sehen, wenn Du dort danach suchen lässt?
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Dezember 2014 15:00
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Dezember 2014 15:33
Alle Antworten
-
Hallo Reiner,
Gibt es eine Besserung, wenn Du SysWOW64 ausführst und konfigurierst?
Datenquellennamen und 64-Bit-Betriebssysteme
Can't Connect to SQL server 2005 installed on windows 7 X64
Gruß,
Dimitar
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
- Bearbeitet Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 5. Dezember 2014 12:00
-
Moin Dietmar,
vielen Dank für Deine Idee.
Das Problem in dem zwei Jahre alten Thread könnte sein, dass er nichts davon geschrieben hat, dass er auch den SQL Browser-Dienst in der Firewall freigegeben hat.Aber, da ich nicht über den ODBC-Verbindungsmanager eine Verbindung versuche aufzubauen, sondern das Problem ist, dass ich vom SQL Browser anscheinend nicht alle Instanzen zurückgemeldet bekomme, wüsste ich jetzt nicht, wo ich was Deiner Meinung nach konfigurieren soll.
Nur zur Klarstellung:
Verbindungsprobleme zum SQL-Server bestehen nicht!
Ich kann mich problemlos mit den allen Clients verbinden.Ich nutze die SQL-Browser-Info lediglich um herauszufinden, ob ich am Netzwerk bin oder der Laptop sich gerade außerhalb der Domäne an eine Internetleistung geklemmt hat. Dabei stellte sich heraus, dass bei zwei Außenstellen das vorhandensein einer SQL-Server-Instanz mir vom Browser-Dienst (oder meiner Programmierung) nicht richtig zurückgemeldet wird.
Daher meine Frage bzgl. des Browser-Dienstes, ob dieses Problem bekannt ist oder ich eine andere Möglichkeit habe, mir die Rückgaben des SQL-Browsers anzuschauen?
Wenn das Problem in meiner Programmierung liegt, wäre ich hier im falschen Forum und stelle die Frage dann nochmal von der Programmiererseite her.
Gruß
Reiner -
Am 04.12.2014 schrieb Reiner Wolff:
ich habe in VB6 eine Klasse, die mir die erreichbaren SQL-Server-Instanzen im Netzwerk liefern soll (s.u.).
Nun habe ich leider zwei Server, auf denen mir nur eine 32bit-Instanz angezeigt wird und die gesuchte 64bit-Instanz des SQL Server 2008 R2 nicht.D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
Du mit deiner Klasse siehst?Mit VB.Net das zu versuchen ist keine Alternative? Mit dem SQL Server
Management Studio siehst Du alle 32- und 64-Bit Instanzen?
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Moin Winfried,
> D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
> Du mit deiner Klasse siehst?Das weiß ich nicht, da ich bislang keinen anderen Server dieser Konstellation gefunden habe.
> Mit VB.Net das zu versuchen ist keine Alternative?
Nein, oder kann ich VB.Net effizient in Excel-VBA einbinden?
Zudem würde das meine Frage nicht klären ;-)> Mit dem SQL Server
> Management Studio siehst Du alle 32- und 64-Bit Instanzen?Ja, mit dem SSMS sehe ich beide Instanzen.
Gruß
Reiner
-
Am 06.12.2014 schrieb Reiner Wolff:
D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
Du mit deiner Klasse siehst?Das weiß ich nicht, da ich bislang keinen anderen Server dieser Konstellation gefunden habe.
Das solltest Du evtl. testen. Ist Aufwand, aber lässt sich mit Hilfe
der Testversionen sicherlich darstellen.Mit VB.Net das zu versuchen ist keine Alternative?
Nein, oder kann ich VB.Net effizient in Excel-VBA einbinden?
Hmm, kommt drauf an wie Du das einbinden möchtest.
Zudem würde das meine Frage nicht klären ;-)
Wenn es mit .Net funktioniert, könnte man als Ursache das VB6
ausmachen.Mit dem SQL Server
Management Studio siehst Du alle 32- und 64-Bit Instanzen?Ja, mit dem SSMS sehe ich beide Instanzen.
Es ist sicher das das hier nicht zutrifft?
| 'bekannte Einschränkung:
| ' findet ausschließlich benannte Instanzen
| ' Standardinstanzen werden nicht aufgelistetBTW: Schreibst Du hier mit einem Newsreader oder über den Browser?
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Am 06.12.2014 schrieb Reiner Wolff:
D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
Du mit deiner Klasse siehst?Das weiß ich nicht, da ich bislang keinen anderen Server dieser Konstellation gefunden habe.
Das solltest Du evtl. testen. Ist Aufwand, aber lässt sich mit Hilfe
der Testversionen sicherlich darstellen.Ja, so einen Test könnte ich bauen, aber gibt es nicht eine einfache Möglichkeit herauszufinden, was der SQL Browser Dienst eigentlich zurückliefert?
Ich hätte gedacht, ich könnte das über Telnet oder dergl. probieren, wüsste aber nicht, was genau ich da eingeben muss..Mit dem SQL Server
Management Studio siehst Du alle 32- und 64-Bit Instanzen?Ja, mit dem SSMS sehe ich beide Instanzen.
Es ist sicher das das hier nicht zutrifft?
| 'bekannte Einschränkung:
| ' findet ausschließlich benannte Instanzen
| ' Standardinstanzen werden nicht aufgelistetEs handelt sich bei beiden Installationen und benannte Instanzen.
Von daher ist das Sichergestellt. Ich kenne diese Einschränkung allerdings nicht. Hast Du dazu mal einen Link?
BTW: Schreibst Du hier mit einem Newsreader oder über den Browser?
Ich habe irgendwann aufgegeben 40Tude an diese Foren anzupassen und komme leider nicht mehr regelmäßig dazu, in den Foren mitzulesen (die wachsende Familie hat da einfach Vorrang). Von daher bemühe ich mich mit den Browsermöglichkeiten klar zu kommen.
Gibt es an der Newsreader-Front für die Forenintegration etwas Neues in den letzten 1,5 Jahren? Denn schön, ist die Browser-Geschichte nicht.VG
Reiner -
Am 07.12.2014 schrieb Reiner Wolff:
Am 06.12.2014 schrieb Reiner Wolff:
D.h. es gibt Server, mit mind. einer 32- und einer 64-Bit Instanz, die
Du mit deiner Klasse siehst?Das weiß ich nicht, da ich bislang keinen anderen Server dieser Konstellation gefunden habe.
Das solltest Du evtl. testen. Ist Aufwand, aber lässt sich mit Hilfe
der Testversionen sicherlich darstellen.Ja, so einen Test könnte ich bauen, aber gibt es nicht eine einfache Möglichkeit herauszufinden, was der SQL Browser Dienst eigentlich zurückliefert?
Weiß ich nicht. Ich könnte mir nur vorstellen, dass VB6 mit 64-Bit ein
Problem hat. Deshalb ja auch die Frage nach .Net, wenn es dort
funktioniert und im SSMS, solltest Du den Schuldigen gefunden haben.Ich hätte gedacht, ich könnte das über Telnet oder dergl. probieren, wüsste aber nicht, was genau ich da eingeben muss..
Der SQL Browser muss über 1434 TCP und 1434 UDP sprechen können.
Mit dem SQL Server
Management Studio siehst Du alle 32- und 64-Bit Instanzen?Ja, mit dem SSMS sehe ich beide Instanzen.
Es ist sicher das das hier nicht zutrifft?
| 'bekannte Einschränkung:
| ' findet ausschließlich benannte Instanzen
| ' Standardinstanzen werden nicht aufgelistetEs handelt sich bei beiden Installationen und benannte Instanzen.
Von daher ist das Sichergestellt. Ich kenne diese Einschränkung allerdings nicht. Hast Du dazu mal einen Link?Ich auch nicht, las es nur in deinem Code. Deshalb nochmal die
Nachfrage.BTW: Schreibst Du hier mit einem Newsreader oder über den Browser?
Ich habe irgendwann aufgegeben 40Tude an diese Foren anzupassen und komme leider nicht mehr regelmäßig dazu, in den Foren mitzulesen (die wachsende Familie hat da einfach Vorrang). Von daher bemühe ich mich mit den Browsermöglichkeiten klar zu kommen.
Gibt es an der Newsreader-Front für die Forenintegration etwas Neues in den letzten 1,5 Jahren? Denn schön, ist die Browser-Geschichte nicht.Mit Hilfe der NNTP-Bridge von Jochen geht das recht gut. In der Bridge
in den Tools > Advanced Options ein paar kleine Einstellungen
vornehmen, schon funktioniert das einwandfrei.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Dezember 2014 15:00
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Dezember 2014 15:33
-
oder ich eine andere Möglichkeit habe, mir die Rückgaben des SQL-Browsers anzuschauen?
Hallo Reiner,
das ist interessant, das ist das erste Mal das ich sehe, das sich jemand die Mühe gemacht hat, den ganzen UDP Broadcast selbst aus zu programmieren.
Alle anderen verwenden das lieber SQL-DMO => ListAvailableSQLServers Method, das sind nur 2 Codezeilen. Hast Du es damit mal versucht? Kannst Du die Instanz im SSMS Login Dialog sehen, wenn Du dort danach suchen lässt?
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 10. Dezember 2014 15:00
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 17. Dezember 2014 15:33
-
Hallo Reiner,
Ich gehe davon aus, dass Olafs und Winfrieds Antworten Dir weitergeholfen haben. Solltest Du noch Rückfragen dazu haben, gib bitte Bescheid.
Grüße,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.