从python中的mssql查询获取消息

时间:2015-10-02 07:03:32

标签: python sql-server

我需要获取有关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获取消息文本的简单方法。 如果没有这种方式,为此目的必须使用什么?

1 个答案:

答案 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;