PYODBC连接将进入休眠模式 [英] PYODBC connection going to sleep mode

查看:0
本文介绍了PYODBC连接将进入休眠模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用PYODBC连接从数据块执行存储过程,在所有事务发生后,状态将进入休眠模式。在这一点上请帮助我, 我尝试了自动提交和连接超时等所有可能性,但都不起作用。

import pyodbc
import datetime
username = "usrname"
password = "password"
server = "server"
database_name = "dbname"
port = "1433"
conn=pyodbc.connect('Driver={ODBC Driver 17 for SQL server};SERVER=tcp:'+server+','+port+';DATABASE='+ database_name +';UID='+ username +';PWD='+ password)
#conn.timeout = 600
cursor=conn.cursor()
# conn.autocommit = True

sql = "set nocount on; exec proc_name"
print("Connection Started at "+str(datetime.datetime.now()))
cursor.execute(sql)
print("Connection closed at "+str(datetime.datetime.now()))
conn.commit()
cursor.close()
conn.close()

print(datetime.datetime.now())

笔记本仍在运行中,请查看下图

一旦所有事务完成(数据插入、删除、更新)状态更新为休眠模式,SPID初始状态的数据库状态即可运行

由于此睡眠状态数据砖笔记本未完成,它将继续运行。请帮我解决这个问题。提前谢谢。

推荐答案

由具有未提交事务的休眠spid引起的阻塞:

此类阻塞通常可以由正在休眠或等待命令,但其事务嵌套级别(@@TRANCOUNT, open_transaction_count from sys.dm_exec_requests)大于零的SPID标识。

如果应用程序遇到查询超时,或者在没有发出所需数量的ROLLBACK和/或COMMIT语句的情况下发出取消,就会发生这种情况。当SPID收到查询超时或取消时,它将终止当前查询和批处理,但不会自动回滚或提交事务。

应用程序应对此负责,因为SQL Server不能假定由于单个查询被取消而必须回滚整个事务。查询超时或取消将在扩展事件会话中显示为SPID的注意信号事件。

参考-https://docs.microsoft.com/en-us/troubleshoot/sql/performance/understand-resolve-blocking#detailed-blocking-scenarios

这篇关于PYODBC连接将进入休眠模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆