求某进程执行的最后一批语句

Chiff 2002-08-27 12:29:56
在企业管理器里面,可以查到某个进程执行的最后一批语句。用T-sql怎么查?如果可以的话,就可以解决 pausing (select 人生 from data) 的问题(他的问题是要在触发器中得到update语句)
...全文
17 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chiff 2002-08-27
  • 打赏
  • 举报
回复
放在trigger里不行,因为trigger得到的spid就是update的spid。我上面那个例子就是说明这种情况
N_chow 2002-08-27
  • 打赏
  • 举报
回复
我不太明白DBCC INPUTBUFFER放在哪里执行呢?
>>>
我想應該是放在trigger里邊吧。
Chiff 2002-08-27
  • 打赏
  • 举报
回复
我不太明白DBCC INPUTBUFFER放在哪里执行呢?
N_chow 2002-08-27
  • 打赏
  • 举报
回复
可是不同的connection怎样找出另一个connection的spid呢?而且怎么保证捕捉到的另一个connection的语句就是update语句呢?如果在update之后立即又执行了另一个语句怎么办?能举个例子吗?
>>>
當每一個client發出insert/delete/update之後,必會觸發table上的trigger,而若在trigger中寫select @@spid所得到的值就是當前發出命令的client的@@spid。再加上HOST_NAME等函數檢測就很容易得到發出命令的電腦資料.
Chiff 2002-08-27
  • 打赏
  • 举报
回复
可是不同的connection怎样找出另一个connection的spid呢?而且怎么保证捕捉到的另一个connection的语句就是update语句呢?如果在update之后立即又执行了另一个语句怎么办?能举个例子吗?
N_chow 2002-08-27
  • 打赏
  • 举报
回复
我的意思是指對每一條不同的Connection,它的@@spid肯定不一樣。
Chiff 2002-08-27
  • 打赏
  • 举报
回复
--不对呀,在trigger里面的进程号是一样呀。

select @@spid
create table TAB(id int,name char(10))
go
create trigger MyTrigger on TAB for update as
select @@spid
go
update tab set id = id
go
drop table tab
supsuccess 2002-08-27
  • 打赏
  • 举报
回复
学习:)
N_chow 2002-08-27
  • 打赏
  • 举报
回复
DBCC INPUTBUFFER(@@spID) WITH NO_INFOMSGS
確實是解決
pausing (select 人生 from data) 的问题的好方法!
在觸發Trigger的每一個Client的@@spID都是不同,所以能捉到每一個Client對資料表所做的修改。
只是所捉到的語句只魴前顯示前面的255個字符。
Chiff 2002-08-27
  • 打赏
  • 举报
回复
DBCC INPUTBUFFER (@@spid)可以看其他进程,当看自己进程的时候是没有实际意义的,因为总是返回“DBCC INPUTBUFFER (@@spid)”本身。
duckcn 2002-08-27
  • 打赏
  • 举报
回复

试试
DBCC INPUTBUFFER (spid)

34,592

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧