Conéctese a la instancia de SQL Server usando pymssql en Windows

Estoy intentando conectarme a una instancia de SQL Server desde un cuadro de Windows usando pymssql (versión 2.0.0b1-dev-20111019 con Python 2.7.1). He intentado el enfoque más básico desde la consola:

import pymssql c = pymssql.connect(host = r'servername\instance', user = 'username', password = 'userpassword') 

En respuesta a esto, obtengo el error muy útil: Error de la InterfaceError: Connection to the database failed for an unknown reason.

Estoy razonablemente seguro de que la información de conexión es correcta, ya que funciona cuando uso adodbapi, con los siguientes comandos:

 import adodbapi c = adodbapi.connect(r'Provider=sqloledb;Data Source=servername\instance;User ID=username;password=userpassword;' c.close 

He intentado agregar el número de puerto al parámetro de host, con el mismo resultado. ¿Alguien tiene alguna sugerencia sobre cómo resolver este problema?


Por cierto, he leído las respuestas en ” No se puede conectar a SQL Server a través de pymssql “. El OP finalmente resolvió su problema configurando correctamente FreeTDS, que, por lo que puedo decir, no es usado por pymssql en Windows.


Basándome en la recomendación de @ cha0site, he intentado usar solo el nombre de host, en lugar del nombre de host y la instancia. Esto resultó en el mismo error, pero pareció demorar más en generar el error (aunque el rastreo sigue indicando la misma línea). La razón por la que he especificado la instancia es que no pude conectarme utilizando SSMS a menos que especificara la instancia, por lo que asumí que sería necesario para otras conexiones.


Ahora también he probado pymssql.connect(host='servername', user='username', password='userpassword', database='instance') con el mismo resultado (basado en el comentario de @ Sid). Basándome en la documentación de pymssql , creo que el parámetro de la database se utiliza para especificar la base de datos inicial a la que se conectará el usuario, en lugar de la instancia.

Solo para aclarar, “instancia” es el nombre proporcionado durante la instalación de SQL Server, no una base de datos dentro de esa instalación. Se me ocurre que es posible que pymssql no admita esta notación, por lo que buscaré volver a configurar la instancia de SQL Server para que no sea necesaria.


Ahora he reinstalado SQL Server como una instancia predeterminada, en lugar de una instancia con nombre, lo que me permite conectarme sin especificar el nombre de la instancia. adodbapi todavía funciona (sin /instance ), pero pymssql sigue pymssql el mismo error. También pymssql y reinstalé pymssql de un archivo recién descargado (todavía la misma versión).

Verifique su archivo freetds.conf y vea si ha configurado el puerto 1219 , luego verifique nuevamente la conexión:

 DB = pymssql.connect(host='DB',user='youruser',password='yourpwd',database='yourDBname') 

Edición: ejemplo de mi archivo freetds.conf de Python:

 host = 'IP' port = 1219