2010-06-18 3 views
2

Je requêtes MS SQL en utilisant python utilisant le code source de http://www.ironpython.info/index.php/Accessing_SQL_Server:MS synchronisation SQL + Python (IronPython) sur

import clr 
clr.AddReference('System.Data') 
from System.Data import * 

TheConnection = SqlClient.SqlConnection 
("server=yourserver;database=News;uid=sa;password=password;timeout=0") 
TheConnection.Open() 

MyAction = SqlClient.SqlCommand("Select Headline from News", TheConnection) 
MyReader = MyAction.ExecuteReader() 

while MyReader.Read(): 
    print MyReader[0] 

MyReader.Close() 
TheConnection.Close() 

Je viens d'ajouter timeout=0, mais je me suis:

EnvironmentError: System.Data.SqlClient.SqlException (0x80131904): Timeout 
expired. The timeout period elapsed prior to completion of the operation 
or the server is not responding. 

Je l'ai essayé avec timeout=1000000, mais j'ai quand même eu la même erreur.

Si je cours le même SQL dans la même machine en utilisant le client MSSQL, c'est tout à fait correct. Savez-vous comment éviter cette exception de timeout?

Répondre

0

Essayez d'augmenter la propriété CommandTimeout sur le SqlCommand comme décrit ici: https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout(v=vs.110).aspx

La valeur de délai d'attente dans la chaîne de connexion ne contrôle que le délai d'attente pour la connexion initiale à la base de données. Cela ne vous aidera pas si votre requête SQL prend beaucoup de temps à s'exécuter, vous devez donc utiliser CommandTimeout à la place.

Questions connexes