Hallo, in meinem momentanen Projekt, versuche ich mit einem STM32 Mikrocontroller über TCP/IP eine Verbindung mit einem MS-SQL Server aufzubauen. Für die Netzwerkverbindung nutze ich ein W5500 Modul. Soweit funktioniert die TCP/IP Verbindung. Diese habe ich mit dem Programm Hercules getestet. Jedoch beim Senden des Connection-Strings zur Datenbank habe ich noch Probleme. Ich sende folgenden Connection String: Server=IP-Adress,Port;Database=myDataBase;User Id=myUsername;Password=myPassword; Beim testen mit Hercules habe ich auch exakt diesen String zurückbekommen. Portfreigabe habe ich auch schon gemacht. Wenn jetzt diesen Connection String zu meinem Server sende, bekomme ich keine Antwort. Über Mikrosoft Management Studio habe ich überprüft ob ein Client sich angemeldet hat (der Client hat sich nicht verbunden) und ich überprüfe ob ich eine Rückmeldung vom Server bekomme (Auch hier keine Rückmeldung). Kann mir hier jemand sagen was ich hier Möglicherweise übersehe?
Hast Du Deinen Test mit "hercules" von einem separaten Computer aus durchgeführt, oder lief das lokal auf dem Computer, auf dem der SQL-Server läuft? Hast Du Dir die Firewall des Computers angesehen, auf dem der SQL-Server läuft? Kannst Du andere Netzwerkkommunikation von Deinem STM32 zum Windows-Rechner ausführen? Passen die vergebenen IP-Adressen und Subnetmasken zusammen? Wenn Dein "hercules" auf einem separaten Computer läuft, lass' mal Wireshark auf dem Computer mit dem SQL-Server laufen und sieh Dir die Kommunikation damit an. Dann wiederhole Deinen Test mit Deinem STM32; die gesendeten Netzwerkpakete müssten wenigstens im Wireshark zu sehen sein.
Harald K. schrieb: > Hast Du Deinen Test mit "hercules" von einem separaten Computer aus > durchgeführt, oder lief das lokal auf dem Computer, auf dem der > SQL-Server läuft? Das Programm "Hercules" läuft auf dem gleichen Rechner wie der MS-SQL Server. Ich nutze das gleiche Netzwerk. Der einzige Unterschied ist der eingestellte Port. Diesen ändere ich jeweils wenn ich mit "Hercules" teste oder mit der Datenbank. > Hast Du Dir die Firewall des Computers angesehen, auf dem der SQL-Server > läuft? Ja das habe ich und habe den jeweiligen Port freigegeben. Das konnte ich dann auch testen, da ich eine Socket Verbindung vorher aufbaue. Heißt ich erstelle ein Socket und verbinde mich mit der IP und dem Port. Ist die Verbindung in Ordnung, dann sende ich erst den Connection String. Jeweils mit Hercules als auch mit dem SQL-Server funktioniert das Verbinden auf IP und Port einwandfrei. > Kannst Du andere Netzwerkkommunikation von Deinem STM32 zum > Windows-Rechner ausführen An sich schon ich habe auf jeden Fall auf den STM32 einen Ping Befehl ausgeführt. Wenn du ein besseren Vorschlag hast bin ich hier offen und versuche das natürlich. > Passen die vergebenen IP-Adressen und Subnetmasken zusammen? Ja, da ich habe mit "Heidi-SQL" mit der IP und dem Port schon mich verbinden können und Subnetzmaske muss ja stimmen sonst könnt ich den Connection String nicht an Hercules senden. > Wenn Dein "hercules" auf einem separaten Computer läuft, lass' mal > Wireshark auf dem Computer mit dem SQL-Server laufen und sieh Dir die > Kommunikation damit an. Dann wiederhole Deinen Test mit Deinem STM32; > die gesendeten Netzwerkpakete müssten wenigstens im Wireshark zu sehen > sein. Ich habe das mal gemacht und sehe auf jeden Fall das Paket was zum SQL-Server geschickt wurde. Ich habe mal ein Bild gemacht. Vielleicht hilft das weiter.
Sebastian K. schrieb: > Ich sende folgenden Connection String: > Server=IP-Adress,Port;Database=myDataBase;User > Id=myUsername;Password=myPassword; Sicher dass das so über TCP laufen muss? Liest sich für mich eher wie ein Konfigurations-String für eine SQL-Client-Library. Edit: Jep. Das ist die Konfiguration für einen .NET SQL-Client. Den hast du sicher nicht auf deinem STM oder W5500. https://learn.microsoft.com/en-us/openspecs/sql_server_protocols/ms-sccstr/f57903e4-18af-4281-aa9e-9b2198bde494
:
Bearbeitet durch User
Danke für die Info. Da ich jetzt nicht wirklich ein absoluter Profi bin in diesem Thema, hast du evtl. eine Website, Buch, Kurs, Video oder anderes, damit ich mich in dieses Thema einlesen bzw. einarbeiten kann. Auch ein Beispiel Code wäre eine große Hilfe für mich.
Ich kenn das Protokoll, was MS-SQL über TCP spricht, nicht wirklich. Über den Link oben findest du aber evtl. weiteres. Einfache Lösung wäre: Du lässt auf dem Rechner mit dem MS-SQL-Server noch einen kleinen Webservice mitlaufen, der die Daten vom STM32 entgegennimmt und in die Datenbank einträgt. Für beides (Webservice mit MSSQL und HTTP über WZ5500) gibt es haufenweise Beispiele.
Εrnst B. schrieb: > Einfache Lösung wäre Das ist so ziemlich die einzige sinnvolle Läsung, denn das Protokoll, das der MSSQL-Server über seine native Socketschnittstelle verwendet, ist ... aufwendig und komplex.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.