2017-08-09 4 views
1

j'essaie de se connecter au serveur SQL 2012 db avec bibliothèque python3 (3.5.3) pymssql (2.1.3) et cette erreur est survenue:connexion pymssql échoue avec "le classement non reconnu"

conn = pymssql.connect(host="192.168.xxx.xxx", user="wbs", password="[email protected]", database="mydb") 
Traceback (most recent call last): 
    File "pymssql.pyx", line 635, in pymssql.connect (pymssql.c:10734) 
    File "_mssql.pyx", line 1902, in _mssql.connect (_mssql.c:21821) 
    File "_mssql.pyx", line 637, in _mssql.MSSQLConnection.__init__ (_mssql.c:6581) 
    File "_mssql.pyx", line 1630, in _mssql.maybe_raise_MSSQLDatabaseException (_mssql.c:17524) 
_mssql.MSSQLDatabaseException: (4075, b'DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (192.168.100.249:1433)\n') 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "pymssql.pyx", line 641, in pymssql.connect (pymssql.c:10824) 
pymssql.OperationalError: (4075, b'DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20018, severity 14:\nGeneral SQL Server error: Check messages from the SQL Server\nDB-Lib error message 20002, severity 9:\nAdaptive Server connection failed (192.168.100.249:1433)\n') 

et MSSQL erreur il y a un journal pour elle:

The USE database statement failed because the database collation %.*ls is not recognized by older client drivers. Try upgrading the client operating system or applying a service update to the database client software, or use a different collation. See SQL 

Répondre

1

par défaut, pépin installe pymssql 2.1.3 à partir d'un fichier binaire roue (.whl) qui est statiquement lié à FreeTDS 0,95. Malheureusement, cette ancienne version de FreeTDS ne sait pas comment utiliser certains des classements SQL Server les moins utilisés. Par exemple, Persian_100_CI_AI est connu pour provoquer une erreur similaire à celle que vous décrivez sous FreeTDS 0.9x (réf: here). FreeTDS 1.x a une meilleure prise en charge pour ces classements, donc une option serait pour vous d'installer la dernière version stable de FreeTDS (actuellement 1.00.51), puis compiler pymssql à partir de la dernière source sur GitHub. Alternativement, vous pouvez essayer d'utiliser pyodbc avec une version actuelle du pilote ODBC de Microsoft pour SQL Server.

+0

Merci beaucoup, je compile et installe freetds dernière stable et pymssql plus tard de git et tout est ok! – alireza