我有以下代码,存储过程用于调用多个存储过程。我可以运行存储过程,它将在SQL 2012中完成而没有问题。我使用的是Python 3.3。
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代码正在执行,我通过插入大量打印确定了这一点。 我确实看到了关于等待SP完成的python的另一个问题。我尝试添加' time.sleep()'执行后,并改变时间(最多120秒)无变化。 根据结果,存储过程似乎部分执行。数据表明它甚至会中断其中一个子存储过程,但是当从查询分析器运行SP时它很好。
我最好的猜测是这与SQL配置相关,但我迷失在哪里看。
有什么想法?
答案 0 :(得分:1)
将SET NOCOUNT OFF添加到我的proc中为我工作。
答案 1 :(得分:0)
只是跟进;我使用位于下面链接的时间功能,并降低嵌套存储过程的级别,取得了有限的成功。
在我上面调用的级别中,有4层嵌套的SP'当你有3层或更少层时,pyodbc似乎表现得更好。对我来说没有多大意义,但它确实有效。
make python wait for stored procedure to finish executing
对此背后的基本原理的任何意见将不胜感激。
答案 2 :(得分:0)
我遇到了同样的问题,并通过设置锁定变量(请参见本凯恩的回答:make python wait for stored procedure to finish executing)并添加
来解决。“ SET NOCOUNT 打开”
在“创建程序...为”之后