Impossible de se connecter à SQL Server via pymssql
Je suis tente de se connecter à SQL Server qui s'exécute sur le système Windows XP à partir d'un *nix système sur un serveur local via pymssql. Cependant, la connexion échoue, comme illustré ci-dessous
db = pymssql.connect(host='192.168.1.102',user='www',password='test',database='TestDB')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pymssql.pyx", line 457, in pymssql.connect (pymssql.c:6041)
raise InterfaceError(e[0])
pymssql.InterfaceError: Connection to the database failed for an unknown reason.
Choses que j'ai essayé:
- Définir SQL Serveur et navigateur pour fonctionner comme un serveur de réseau.
- De configuration d'un utilisateur "www". J'ai également testé cette utilisateur localement dans SQL Studio.
- Désactivé le pare-feu Windows (temporairement bien sûr).
Me manque quelque CHOSE - je ne sais pas ce que c'est. J'ai essayé tous de l'infini options de menu sur Windows en vain. Une chose que j'ai remarqué, c'est que si le Pare-feu Windows est activé (j'ai installé une exception pour SQL Server) python arrête un long moment, puis donne l'erreur. Si le pare-feu est désactivé, l'erreur est instantanée.
Sont là tous les journaux, je peux regarder dans SQL Server?
à faible niveau de débogage utiliser wireshark.
Merci! J'ai couru wireshark et il a fourni des données - un simple "ack" il apparaît. Il ne semble pas être beaucoup à aller sur cependant. Info dit "ms-sql-s > 50051 [RST, ACK] Seq=1 Ack=1 Victoire=0 Len=0.
Je vois de plus amples détails. L'Expert "Info" états "Connection reset (RST)" - je ne sais pas pourquoi.
J'ai trouvé je ne telnet 127.0.0.1 1433. J'ai "échec de la connexion". J'ai vérifié que le serveur est en cours d'exécution et le port #. Je vais continuer d'essayer.
faites u ont le "sql server management studio" ?
Merci! J'ai couru wireshark et il a fourni des données - un simple "ack" il apparaît. Il ne semble pas être beaucoup à aller sur cependant. Info dit "ms-sql-s > 50051 [RST, ACK] Seq=1 Ack=1 Victoire=0 Len=0.
Je vois de plus amples détails. L'Expert "Info" états "Connection reset (RST)" - je ne sais pas pourquoi.
J'ai trouvé je ne telnet 127.0.0.1 1433. J'ai "échec de la connexion". J'ai vérifié que le serveur est en cours d'exécution et le port #. Je vais continuer d'essayer.
faites u ont le "sql server management studio" ?
OriginalL'auteur Christopher | 2010-11-11
Vous devez vous connecter pour publier un commentaire.
Obtenu! Je pense que la source du problème n'était pas de donner Libre TDS l'attention dont il a besoin. Gratuit TDS est apparemment le pilote derrière pymssql et fournit la connectivité à d'autres bases de données - SQL Server est l'un d'eux.
La freetds.conf fichier se trouve dans /usr/local/etc sur mon système (Mac Book Pro).
Ce fichier contient les paramètres par défaut de l'installation. Cependant, j'avais déjà ajouté une définition pour que je puisse connecter, mais j'ai oublié à ce sujet et, malheureusement, n'a pas à prendre des notes.
De toute façon, voici un exemple de ce que j'ai ajouté à freetds.conf:
Cependant, ce qui est étonnant est que j'ai mis le port de 1219. Je l'avais mis manuellement à 1433 dans SQL Studio. Aussi, je suis en utilisant TDS version 0.82 donc je ne sais pas comment 7.0 s'inscrit dans.
Ensuite, j'ai testé la connectivité à l'aide de 'tsql, comme suit:
Je rentre le mot de passe et obtenir une ligne de commande qui permet de requêtes SQL.
Ensuite, j'ai testé la connexion à l'aide pymssql comme suit:
Comme vous pouvez le voir, j'avais besoin d'utiliser le nom d'hôte de la freetds.conf fichier et NON l'IP directement. J'ai ensuite testé une simple requête supplémentaire avec le code python pour s'assurer que je pouvais lire à partir de la base de données.
J'espère que cela aide quelqu'un d'autre dans l'avenir.
host=10.43.32.211:1433, database=v000001, trusted=True
oh, peut-être
pymssql
ne pas utiliser une chaîne de connexion, mais les paramètres nommés (contrairement à certains autres bibliothèques) ... un peu bizarre, mais bon.OriginalL'auteur Christopher
On dirait que vous avez ce résolus, mais pour quelqu'un d'autre à partir de google qui atterrit ici: assurez-vous en mode mixte autorisation est activée sur votre Serveur MS SQL. La valeur par défaut est seulement en permettant à Windows de l'autorisation, et qui sera la cause de cette erreur dans
pymssql
.OriginalL'auteur notatoad
est-il une machine windows u? spécifiez le port 1433.
il semble être un bug dans le mssql client de l'api, qui tente d'utiliser Namedpipes au lieu de TCP/IP.
OriginalL'auteur mo.