如何从sql server 2000的系统表里获得当前登陆到数据库的用户

joint 2003-01-20 06:58:39
如何从sql server 2000的系统表里获得当前登陆到数据库的用户
...全文
165 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-01-20
  • 打赏
  • 举报
回复
pid smallint 系统进程 ID。
ecid smallint 与指定 SPID 相关联的给定线程的执行上下文 ID。
ECID = {0, 1, 2, 3, ...n},其中 0 始终表示主或父线程,并且 {1, 2, 3, ...n} 表示子线程。

status nchar(30) 进程状态。
loginame nchar(128) 与特定进程相关联的登录名。
hostname nchar(128) 每个进程的主机或计算机名。
blk char(5) 如果存在阻塞进程,则是该阻塞进程的系统进程 ID。否则该列为零。
当与给定的 spid 相关联的事务受到孤立分布式事务的阻塞时,该列将对阻塞孤立事务返回 '-2'。

dbname nchar(128) 进程使用的数据库。
cmd nchar(16) 为此进程执行的 SQL Server 命令(Transact-SQL 语句、SQL Server 内部引擎处理等)。
pengdali 2003-01-20
  • 打赏
  • 举报
回复
你可以看到sp_who返回的dbname列中显示了该进程,当前打开那个库的库名
pengdali 2003-01-20
  • 打赏
  • 举报
回复
不能给问题加分!

对与登陆
select * from master..sysprocesses

已经包括了所有登陆sql的进程!
joint 2003-01-20
  • 打赏
  • 举报
回复
是否sp_who可以用来做参考??
joint 2003-01-20
  • 打赏
  • 举报
回复
我们这个应用用.NET做的,数据库登录内部采用WINDOWS AUTH方式,所以在获得这个用户后,还要到应用数据库里面查找这个用户的具体信息.所以有点麻烦,请指教.

小弟初来乍道,怎么给问题加分啊??
joint 2003-01-20
  • 打赏
  • 举报
回复
肯定给分,而且准备加到100分,提问的时候没发现这么难,后来发现要操作两个数据库,一个是master,另外一个是应用数据库,呵呵,
请各位大哥多多包涵,小弟在此谢过.请帮忙
pengdali 2003-01-20
  • 打赏
  • 举报
回复
你20分给不给是你的事!但你要结贴呀!
pengdali 2003-01-20
  • 打赏
  • 举报
回复
你的问题有问题吧!
joint 2003-01-20
  • 打赏
  • 举报
回复
还有啊,我这里又遇到一个问题,在master的系统表里得到user以后,要到另外一个数据库里面的users表里面查找这个用户的信息,呵呵如何操作乎?大哥救命
CoolAbu 2003-01-20
  • 打赏
  • 举报
回复
select system_user

Very Easy!!!!
joint 2003-01-20
  • 打赏
  • 举报
回复
老哥,不用这么狠吧,就20分啊,你这么拼命啊
pengdali 2003-01-20
  • 打赏
  • 举报
回复
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status < >-1
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end

--用法
use master
exec killspid '数据库名'
joint 2003-01-20
  • 打赏
  • 举报
回复
讨论一下怎么分钱啊
pengdali 2003-01-20
  • 打赏
  • 举报
回复
select * from master..sysprocesses
joint 2003-01-20
  • 打赏
  • 举报
回复
看了看,两人说的都有地方对的,我通过sp_who找到了master.dbo.processes.
商量一下怎么个给分法?一人一半怎么样?
joint 2003-01-20
  • 打赏
  • 举报
回复
看到了.在master.dbo.processes,加分
joint 2003-01-20
  • 打赏
  • 举报
回复
我的数据库里面居然没有sysprocesses.
sysusers里面哪个字段表示用户当前正在登陆使用数据库?
hyj8425 2003-01-20
  • 打赏
  • 举报
回复
运行存储过程sp_who,或打开具体的某一个数据库的sysusers表察看
pengdali 2003-01-20
  • 打赏
  • 举报
回复
select * from sysprocesses

34,838

社区成员

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

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