我需要获取有关MSSQL中打开事务的信息。如果我在cmd行中获取信息
sqlcmd -S serv1 -Q "DBCC opentran"
我明白了:
Oldest active transaction:
SPID (server process ID): 661
UID (user ID) : -1
Name : INSERT
LSN : (6611914:123819:1)
Start time : Oct 2 2015 9:43:18:060AM
SID : 0x39d6ed27627f5c438e8d8fe2588b3ec6
如果我尝试在python中创建它:
import dbcc
conn=odbc.odbc("Driver={SQL Server};Server=srv1;Trusted_Connection=Yes")
cursor=conn.cursor()
cursor.execute('dbcc opentran')
print cursor.fetchall()
我得到了
dbi.internalError: [Microsoft][ODBC SQL Server Driver]═No data in
FETCH
因为文字不是结果而且文字是消息。 是否有通过odbc获取消息文本的简单方法。 如果没有这种方式,为此目的必须使用什么?
答案 0 :(得分:0)
您可以从sysprocesses获取信息:
SELECT
DB_NAME(dbid) AS DBNAME,
(SELECT text FROM sys.dm_exec_sql_text(sql_handle)) AS SQLSTATEMENT
FROM master..sysprocesses
WHERE open_tran > 0
或者,来自dm_tran_current_transaction:
SELECT
transaction_id
,transaction_sequence_num
,transaction_is_snapshot
,first_snapshot_sequence_num
,last_transaction_sequence_num
,first_useful_sequence_num
FROM sys.dm_tran_current_transaction;