如何从PYODBC返回错误

mik*_*sey 5 python pyodbc

我正在建立连接SQL Server以执行存储过程."轮询"服务器以确定存储过程是否成功运行或者如果SP花费超过60秒/ 3600秒等时返回错误的正确方法是什么?

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER=ServerName; PORT=1433;DATABASE=dbname;UID=%s;PWD=%s'  % (username, password))
cnxn.execute("EXECUTE msdb.dbo.sp_start_job 'TestSP'")
<pyodbc.Cursor object at 0x0000000002D6DDB0>
Run Code Online (Sandbox Code Playgroud)

如何确定SP的状态?

Par*_*ait 6

考虑execute在try/except中包装以捕获异常(包含错误).如果没有引发错误,execute则假定正确运行.此外,使用超时变量(以秒为单位),因为OperationError如果发生超时,数据库应该引发.

cnxn = pyodbc.connect('DRIVER={SQL Server}; SERVER=ServerName; PORT=1433; \
                       DATABASE=dbname;UID={0};PWD={1}'.format(username, password))

cnxn.timeout = 60    
cursor = cnxn.cursor()
try:
    cnxn.execute("EXECUTE msdb.dbo.sp_start_job 'TestSP'")
except Exception as e:
    print(e)
Run Code Online (Sandbox Code Playgroud)