导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

joint 江苏洛凯机电制造集团有限公司 CTO  2003-01-20 06:58:39
如何从sql server 2000的系统表里获得当前登陆到数据库的用户
...全文
84 点赞 收藏 19
写回复
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
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告