查看连接到SQL Server数据库的用户信息-红尘如烟
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> ADP及SQL SERVER


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

发表时间:2010/8/6 评论(2) 浏览(67962)  评论 | 加入收藏 | 复制
   
摘 要:在数据库应用系统中,查看当前连接到数据库的用户信息是一个比较常用的功能,本文讲述了以SQL Server作为后台数据库,Access作为前台客户端时,如何在Access中查询当前数据库连接用户信息。 
正 文:

      在数据库应用系统中,查看当前连接到数据库的用户信息是一个比较常用的功能,本文讲述了以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)最终效果


Access软件网交流QQ群(群号:198465573)
 
 相关文章
[Access教程]Access与MS SQL Server数据库...  【漏蛧尐魚℡  2013/2/28】
Access、SQL Server、Oracle常见应用的区别  【宏鹏(转载)  2013/3/6】
解决sql server挂起  【麥田  2013/3/7】
通过 SQL Server 视图访问另一个数据库服务器表的方法  【一杯绿茶  2013/3/17】
为 SQL Server 添加链接服务器  【一杯绿茶  2013/3/17】
常见问答
技术分类
相关资源
文章搜索
关于作者

红尘如烟

文章分类

文章存档

友情链接