2016-04-25 76 views
0

我有以下代码,并且存储过程用于调用多个存储过程。我可以运行存储过程,它将在SQL 2012中没有问题的情况下完成。我正在使用Python 3.3。PyODBC执行存储过程不完成

cnxn = pyodbc.connect('DRIVER={SQL Server};Server=.\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=yes;') 
cursor = cnxn.cursor() 

cnxn.timeout = 0 
cnxn.autocommit = True 

cursor.execute("""exec my_SP""") 

python代码正在执行,我从插入大量打印件确定了这一点。 我看到了另外一个关于python等待SP完成的问题。我尝试在执行后添加'time.sleep()',并改变时间(最长120秒)不变。 根据结果,存储过程显示为部分执行。数据表明它甚至中断了其中一个子存储过程,但当SP从查询分析器运行时,它仍然很好。

我最好的猜测是这是SQL配置相关的东西,但我迷失在哪里看。

有什么想法?

回答

0

只是跟进;我使用位于下面链接的时间特征取得了有限的成功,并降低了嵌套存储过程的级别。

在我上面提到的级别中,有4层嵌套的SP;当你有3层或更少的层面时,pyodbc似乎表现得更好一些。对我来说没有多大意义,但它有效。

make python wait for stored procedure to finish executing

上这背后的基本原理的任何输入,将不胜感激。

0

将SET NOCOUNT OFF添加到我的proc为我工作。