select r.session_id,r.start_time,r.command,s.text from sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS s
select r.session_id,r.start_time,r.command, SUBSTRING(st.text,(qs.statement_start_offset/2)+1, ((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END -qs.statement_start_offset)/2)+1) AS statement_text from sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS s where r.status='running' and r.command not in('SELECT','TASK MANAGER')
2005可用DDl触发器实现
注:A、B机中的数据库db1的结构是相同的。先前试过在触发器中生成被更改的记录,但是那种只能记录出数据,具体的操作该怎么办呢?例如删除和更新操作,有受影响的数据似乎没什么用处啊。
from sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS s
SUBSTRING(st.text,(qs.statement_start_offset/2)+1,
((CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
-qs.statement_start_offset)/2)+1) AS statement_text
from sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS s
where r.status='running' and r.command not in('SELECT','TASK MANAGER')