【发布时间】:2018-04-23 09:40:40
【问题描述】:
我正在使用 python(3.6) 的 pyodbc 模块执行 MSSQL stored procedure。如果我的存储过程的执行时间超过 4 分钟,它会从那里静默退出而不会出现任何错误。
我将远程连接超时设置为零(这意味着无限超时)。
问题是它没有抛出任何错误/异常,所以我无法追踪它。
仅当存储过程执行时间较长时才会出现此问题。
为什么会这样? pyodbc 方面有什么限制吗?
还是来自 mssql 服务器端的任何限制?
代码 sn-p 如下:-
conn = pyodbc.connect("Driver={SQL Server Native Client 10.0};Server=myserver;Databse=mydb;Trusted_Connection=True")
sql = """
declare @cnt int=1
while @cnt < 100
begin
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
print('dummy message')
insert into table1 values (@cnt)
set @cnt = @cnt + 1
end
"
result = conn.execute(sql)
print(result.fetchall())
如果有许多语句正在执行或有许多打印语句,则存储过程只是简单地退出而没有任何错误。
通过设置我已经尝试过的SET NOCOUNT ON,可以避免打印/更新/插入语句。
【问题讨论】:
-
请包含您的代码,尤其是 pyodbc 连接字符串。最好知道您从哪个操作系统连接、您使用的驱动程序以及您使用的任何配置文件(例如
odbc.ini或freetds.conf)。 -
@FlipperPA 添加了示例代码
标签: sql-server python-3.x stored-procedures pyodbc