Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > ADP及SQL SERVER

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

时 间:2010-08-06 00:00:00
作 者:红尘如烟   ID:10768  城市:成都
摘 要:在数据库应用系统中,查看当前连接到数据库的用户信息是一个比较常用的功能,本文讲述了以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群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助