查看连接到SQLServer数据库的用户信息

张志哥聊电脑事 2024-09-10 18:49:01

在数据库应用系统中,查看当前连接到数据库的用户信息是一个比较常用的功能,本文讲述了以SQL Server作为后台数据库,Access作为前台客户端时,如何在Access中查询当前数据库连接用户信息。此功能添加到你开发的Access客户端程序中,也可以作为一个单独的管理工具来用。下面就具体说一下如何在mdb中如何实现。

首先进入SQL Server的企业管理器,在数据库中新建一个存储过程,这个查询功能主要是通过这个存储过程来实现的,在客户端只是调用而已,将下面的代码复制粘贴到 图1 的输入框中,然后点确定保存,这样存储过程就创建完成了。

Create PROCEDURE GetConnectionsInfo

@DatabaseName sysname=NULL, --参数1:要查询的数据库名称,默认查询所有数据库的连接信息

@ShowIPAddress bit=0 --参数2:是否显示IP地址,默认为否(查询IP地址比较费时)

AS

DECLARE @DatabaseID int

SET @DatabaseID=db_id(@DatabaseName)

Create TABLE #tblTemp(ID int identity(1,1),

DatabaseName sysname,

HostName nchar(128),

UserName nchar(128),

MACAddress nchar(12),

IPAddress nchar(15),

Application nchar(128))

Insert INTO #tblTemp(HostName,DatabaseName,MACAddress,UserName,Application)

Select DISTINCT hostname,db_name(dbid),net_address,loginame,program_name

FROM master..sysprocesses

Where hostname<>'' AND (@DatabaseID IS NULL or dbid=@DatabaseID)

IF @ShowIPAddress=0 GOTO Tag_ShowIPAddress

DECLARE @SQLStatement varchar(500),@HostName nchar(128),@ID int

Create TABLE #tblIP(HostName nchar(128),

TempString varchar(200))

DECLARE tblTemp CURSOR LOCAL FOR Select DISTINCT HostName FROM #tblTemp

OPEN tblTemp

FETCH NEXT FROM tblTemp INTO @HostName

WHILE @@FETCH_STATUS=0

BEGIN

SET @SQLStatement='ping '+@HostName+' -a -n 1 -l 1'

Insert #tblIP(TempString) EXEC master..xp_cmdshell @SQLStatement

Update #tblIP SET HostName=@HostName Where HostName IS NULL

FETCH NEXT FROM tblTemp INTO @HostName

END

Update #tblTemp SET IPAddress=LEFT(TempString,PATINDEX('%:%',TempString)-1)

FROM #tblTemp X INNER JOIN ( Select HostName,TempString=SUBSTRING(TempString,PATINDEX('ping statistics for %:%',TempString)+20,20)

FROM #tblIP

Where TempString LIKE'ping statistics for %:%') Y

ON X.HostName=Y.HostName

Tag_ShowIPAddress:

Select 序号=ID,数据库名称=DatabaseName,客户机名称=RTRIM(HostName),用户名=RTRIM(UserName),

MAC地址=MACAddress,IP地址=IPAddress,应用程序名称=RTRIM(Application)

FROM #tblTemp

GO

(图1)创建存储过程

(图2)更改查询类型

(图3)修改连接字串及SQL语句

(图4)最终效果

0 阅读:0