Ü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%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).
Ü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%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).
Tags und Links python sql-server pymssql