我从来没有在 SQL Server 2000 上工作过,我需要检查将以下信息捕获到一个特定的数据库。
DBName CurrentDate SPID BatchDuration ApplicationName HostName LoginName SQLQuery
我尝试了下面的查询,但它首先没有返回任何信息或不满足要求,因为它没有捕获 ApplicationName 和 SQL 文本。
SELECT
DB_NAME(dbid) as dbName
, CURRENT_TIMESTAMP as CurrentDate
, P.spid
, right(convert(varchar,
dateadd(ms, datediff(ms, P.last_batch, getdate()), '2000-01-01'),
121), 12) as 'batch_duration'
, P.program_name
, P.hostname
, P.loginame
, P.cmd
from master.dbo.sysprocesses P
where P.spid > 50
and P.status not in ('background', 'sleeping')
and P.cmd not in ('AWAITING COMMAND'
,'MIRROR HANDLER'
,'LAZY WRITER'
,'CHECKPOINT SLEEP'
,'RA MANAGER')
and DB_NAME(dbid) ='master'
order by batch_duration desc
此外,当我尝试通过 SQL 代理设置此脚本时,它只允许每隔一分钟运行一次。有没有其他更好的方法可以像每 5 秒运行一次?或者也许我应该使用另一种方法,例如通过触发器捕获带有所需信息的登录?
任何输入将不胜感激。