Herstellen einer Verbindung zur SQL Server-Instanz mithilfe von pymssql unter Windows

8

Ich versuche, eine Verbindung zu einer SQL Server-Instanz aus einer Windows-Box mithilfe von Pymssql (Version 2.0.0b1-dev-20111019 mit Python 2.7.1) herzustellen. Ich habe den einfachsten Ansatz von der Konsole aus versucht:

%Vor%

Als Reaktion darauf erhalte ich den sehr hilfreichen Fehler: InterfaceError: Connection to the database failed for an unknown reason.

Ich bin ziemlich sicher, dass die Verbindungsinformationen korrekt sind, so wie es funktioniert, wenn ich adodbapi verwende, mit den folgenden Befehlen:

%Vor%

Ich habe versucht, die Portnummer zum Host-Parameter hinzuzufügen, mit dem gleichen Ergebnis. Hat jemand einen Vorschlag zur Lösung dieses Problems?

Übrigens habe ich die Antworten unter " nicht verbinden können zu SQL Server über pymssql ". Das OP löste schließlich sein Problem, indem er FreeTDS korrekt konfigurierte, was, wie ich feststellen kann, von pymssql unter Windows nicht verwendet wird.

Basierend auf der Empfehlung von @ cha0site habe ich versucht, nur den Hostnamen und nicht den Hostnamen und die Instanz zu verwenden. Dies führte zu dem gleichen Fehler, aber es schien länger zu dauern, den Fehler zu erzeugen (obwohl das Traceback immer noch dieselbe Zeile anzeigt). Der Grund, warum ich die Instanz angegeben habe, ist, dass ich keine Verbindung mit SSMS herstellen konnte, wenn ich die Instanz nicht spezifizierte. Daher nahm ich an, dass dies für andere Verbindungen erforderlich wäre.

Ich habe jetzt auch pymssql.connect(host='servername', user='username', password='userpassword', database='instance') mit dem gleichen Ergebnis probiert (basierend auf @ Sids Kommentar). Basierend auf der Dokumentation von pymssql glaube ich, dass der Parameter database verwendet wird, um die anfängliche Datenbank anzugeben, die der Der Benutzer soll mit der Instanz verbunden werden.

Nur zur Klarstellung: "Instanz" ist der Name, der bei der Installation von SQL Server angegeben wurde, keine Datenbank innerhalb dieser Installation. Es fällt mir ein, dass es möglich ist, dass Pymssql diese Notation nicht unterstützt, daher werde ich die SQL Server-Instanz neu konfigurieren, so dass sie nicht benötigt wird.

Ich habe SQL Server jetzt als Standardinstanz und nicht als benannte Instanz neu installiert, wodurch ich eine Verbindung herstellen kann, ohne den Instanznamen anzugeben. adodbapi funktioniert immer noch (ohne /instance ), aber pymssql gibt immer noch denselben Fehler zurück. Ich habe auch pymssql aus einem frisch heruntergeladenen Archiv entfernt und neu installiert (immer noch die gleiche Version).

    
Allan 06.02.2012, 18:14
quelle

1 Antwort

0
___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank. ___ qstnhdr ___ Herstellen einer Verbindung zur SQL Server-Instanz mithilfe von pymssql unter Windows ___ antwort10121999 ___

Überprüfen Sie Ihre freetds.conf-Datei und sehen Sie, ob Sie den Port 1219 gesetzt haben, und prüfen Sie dann erneut die Verbindung:

%Vor%

Bearbeiten: Beispiel meiner freetds.conf-Datei Python:

%Vor%     
___ tag123python ___ Python ist eine dynamische und stark typisierte Programmiersprache, die die Usability betont. Zwei ähnliche, aber größtenteils inkompatible Versionen von Python sind weit verbreitet (2 und 3). Wenn Sie eine versionsspezifische Python-Frage haben, sollten Sie die Tags [python-2.7] oder [python-3.x] zusätzlich zum Tag [python] verwenden. Wenn Sie eine Python-Variante wie jython, pypy, iron-python usw. verwenden, kennzeichnen Sie diese bitte entsprechend. ___ tag123pymssql ___ Eine Schnittstelle für Python, die eine standardmäßige Python DB-API-Schnittstelle für Microsoft SQL Server bereitstellt. ___ qstntxt ___

Ich versuche, eine Verbindung zu einer SQL Server-Instanz aus einer Windows-Box mithilfe von Pymssql (Version 2.0.0b1-dev-20111019 mit Python 2.7.1) herzustellen. Ich habe den einfachsten Ansatz von der Konsole aus versucht:

%Vor%

Als Reaktion darauf erhalte ich den sehr hilfreichen Fehler: %code%

Ich bin ziemlich sicher, dass die Verbindungsinformationen korrekt sind, so wie es funktioniert, wenn ich adodbapi verwende, mit den folgenden Befehlen:

%Vor%

Ich habe versucht, die Portnummer zum Host-Parameter hinzuzufügen, mit dem gleichen Ergebnis. Hat jemand einen Vorschlag zur Lösung dieses Problems?

Übrigens habe ich die Antworten unter " nicht verbinden können zu SQL Server über pymssql ". Das OP löste schließlich sein Problem, indem er FreeTDS korrekt konfigurierte, was, wie ich feststellen kann, von pymssql unter Windows nicht verwendet wird.

Basierend auf der Empfehlung von @ cha0site habe ich versucht, nur den Hostnamen und nicht den Hostnamen und die Instanz zu verwenden. Dies führte zu dem gleichen Fehler, aber es schien länger zu dauern, den Fehler zu erzeugen (obwohl das Traceback immer noch dieselbe Zeile anzeigt). Der Grund, warum ich die Instanz angegeben habe, ist, dass ich keine Verbindung mit SSMS herstellen konnte, wenn ich die Instanz nicht spezifizierte. Daher nahm ich an, dass dies für andere Verbindungen erforderlich wäre.

Ich habe jetzt auch %code% mit dem gleichen Ergebnis probiert (basierend auf @ Sids Kommentar). Basierend auf der Dokumentation von pymssql glaube ich, dass der Parameter %code% verwendet wird, um die anfängliche Datenbank anzugeben, die der Der Benutzer soll mit der Instanz verbunden werden.

Nur zur Klarstellung: "Instanz" ist der Name, der bei der Installation von SQL Server angegeben wurde, keine Datenbank innerhalb dieser Installation. Es fällt mir ein, dass es möglich ist, dass Pymssql diese Notation nicht unterstützt, daher werde ich die SQL Server-Instanz neu konfigurieren, so dass sie nicht benötigt wird.

Ich habe SQL Server jetzt als Standardinstanz und nicht als benannte Instanz neu installiert, wodurch ich eine Verbindung herstellen kann, ohne den Instanznamen anzugeben. %code% funktioniert immer noch (ohne %code% ), aber %code% gibt immer noch denselben Fehler zurück. Ich habe auch %code% aus einem frisch heruntergeladenen Archiv entfernt und neu installiert (immer noch die gleiche Version).

    
___
Voislav Sauca 12.04.2012 10:44
quelle

Tags und Links