Es konnte keine Verbindung mit SQL Server über pymssql hergestellt werden

8

Ich versuche, eine Verbindung zu SQL Server unter Windows XP System von einem * Nix-System auf einem lokalen Server über Pymssql herzustellen. Die Verbindung schlägt jedoch wie unten gezeigt fehl.

%Vor%

Dinge, die ich versucht habe:

  1. Legen Sie fest, dass SQL Server und Browser als Netzwerkserver ausgeführt werden.
  2. Richten Sie einen Benutzer 'www' ein. Ich habe diesen Benutzer auch lokal in SQL Studio getestet.
  3. Die Windows-Firewall wurde deaktiviert (vorübergehend natürlich).

Ich vermisse etwas - ich weiß einfach nicht, was es ist. Ich habe alle unendlichen Menüoptionen unter Windows vergeblich versucht. Eine Sache, die ich bemerkte, ist, dass, wenn die Windows-Firewall eingeschaltet ist (ich eine Ausnahme für SQL Server einrichten) Python eine lange Zeit pausiert und dann den Fehler gibt. Wenn die Firewall ausgeschaltet ist, ist der Fehler sofort.

Gibt es irgendwelche Protokolle, die ich in SQL Server betrachten kann?

    
Christopher 11.11.2010, 00:47
quelle

3 Antworten

12

Verstanden! Ich denke, die Quelle des Problems war, Free TDS nicht die Aufmerksamkeit zu schenken, die es braucht. Free TDS ist offensichtlich der Treiber hinter Pymssql und bietet eine Verbindung zu anderen Datenbanken - SQL Server ist einer von ihnen.

Die Datei freetds.conf befindet sich in / usr / local / etc auf meinem System (Mac Book Pro).

Diese Datei enthält die Standardeinstellungen der Installation. Allerdings hatte ich zuvor eine Definition hinzugefügt, so dass ich mich verbinden konnte, habe es aber vergessen und leider keine Notizen gemacht.

Wie auch immer, hier ist ein Beispiel für das, was ich an freetds.conf angehängt habe:

%Vor%

Was allerdings verwirrend ist, ist, dass ich den Port auf 1219 gesetzt habe. Ich habe ihn in SQL Studio manuell auf 1433 gesetzt. Außerdem verwende ich TDS Version 0.82, also weiß ich nicht, wie 7.0 passt.

Als nächstes habe ich die Konnektivität mit 'tsql' wie folgt getestet:

%Vor%

Ich gebe das Passwort ein und erhalte eine Kommandozeile, die SQL-Abfragen erlaubt.

Als nächstes habe ich die Verbindung mit pymssql wie folgt getestet:

%Vor%

Wie Sie sehen können, musste ich den Hostnamen aus der Datei freetds.conf und NICHT die IP direkt verwenden. Ich habe dann eine einfache Abfrage mit zusätzlichem Python-Code getestet, um sicherzustellen, dass ich aus der Datenbank lesen konnte.

Ich hoffe, das hilft jemandem in der Zukunft.

    
Christopher 11.11.2010, 22:10
quelle
2

Es sieht so aus, als ob Sie das gelöst haben, aber für jeden anderen von Google, der hier landet: Überprüfen Sie, ob die Mixed-Mode-Autorisierung auf Ihrem MS SQL Server aktiviert ist. Es wird standardmäßig nur Windows-Autorisierung erlaubt, und das wird diesen Fehler in pymssql verursachen.

    
notatoad 06.06.2011 18:25
quelle
0

Ist es eine Windows-Maschine, an der Sie arbeiten? Spezifizieren Sie den Port 1433. Es scheint ein Fehler in der mssql-Client-API zu sein, die versucht, Namedpipes anstelle von TCP / IP zu verwenden.

    
mo. 11.11.2010 00:58
quelle

Tags und Links