Sono di fronte a un problema con uno script Python che si collega a un DB del server MS SQL con mirroring. Sta generando un errore di segmentazione quando provo a connettermi al DB per la seconda volta. Sia il server dell'app sia le istanze DB sono in esecuzione su Google Compute Engine.Segfault sulla seconda connessione con pyodbc su MS SQL Server con mirroring
Ecco po 'di codice replicare il problema:
import pyodbc
params = {
'autocommit': True,
'uid': 'myuser',
'tds_version': '8.0',
'DRIVER': '{mssql}',
'pwd': 'mypassword',
'server': 'sql-server-01',
'database': 'mydb',
'port': 1433,
}
c1 = pyodbc.connect(**params)
c2 = pyodbc.connect(**params)
La prima connessione (c1) ha successo, ma la seconda connessione (c2) non riesce immediatamente con segmentation fault. "mydb" è speculare su un secondo server (sql-server-02). L'utilizzo di un DB senza mirroring o la disabilitazione del mirroring per questo DB lo fanno andare via.
Abbiamo provato ad aggiornare diverse librerie e questo non ha risolto il problema. Versioni:
- Microsoft SQL Server: 12.00.2000 (ultimo)
- Python: 2.7.6
- pyodbc: 3.0.10 (più recente)
- unixODBC: 2.2.14p2-5ubuntu5, 2.3 0,0, 2.3.4 (l'ultima)
- driver per MS ODBC per RedHat: 11.0.1790.0, 11.0.2270.0 (ultima)
per aggiungere qui, il codice Java di eseguire la stessa procedura funziona bene.
Qualche idea?
Grazie per la risposta. In effetti, abbiamo utilizzato FreeTDS fino a quando MS non ha pubblicato il proprio driver; il passaggio è possibile, anche se dovremo pesare pro e contro. Ci sono dei collegamenti sul nuovo sforzo del driver della MS? –
MS ha ammesso che la qualità del driver è scarsa; ecco un link alla discussione: https://groups.google.com/forum/#!topic/django-developers/FbBcUCzrSZo L'incontro sta effettivamente accadendo a Seattle questa settimana con alcune delle persone che hanno lavorato più da vicino su Django Supporto SQL Server. – FlipperPA