获取当前可以访问的sql server,引用sqldmo。 Dim Server As SQLDMO.NameList
Dim appDMO As New SQLDMO.Application
Dim i As Integer
On Error GoTo Error
Set Server = appDMO.ListAvailableSQLServers
For i = 1 To Server.Count
cmbServer.AddItem Server(i)
'Debug.Print Server(i)
Next
Dim appDMO As New SQLDMO.Application
Dim i As Integer
On Error GoTo Error
Set Server = appDMO.ListAvailableSQLServers
For i = 1 To Server.Count
cmbServer.AddItem Server(i)
'Debug.Print Server(i)
Next
USE master
EXEC sp_who 'active'
来获得当前活动进程的信息。或者用下面语句,但没测试过。select a.spid, a.nt_domain, a.hostname, a.username, a.loginname, a.login_time, OBJECT_NAME(a.dbid) as dbname from master..sysprocesses a where a.status = 'active'
第一个问题,我是指在客户机连接服务器的数据库时,在服务器方判断该客户机的计算机名与ip地址。
用status = 'active'查找出的是多个已连接的用户,好像不能解决这个问题吧?
请把取得机器名与ip地址的代码贴出来好吗?我瞻仰瞻仰 :)
谢谢to toupdate:
您的意思是客户机扫描服务器端口吗?我是指在服务器方判断登陆客户机的计算机名与ip地址
如果我理解有误,说详细些行吗?
参考:
select @@SERVERNAME
在这种情况下应该在IIS会话中取出远程WEB用户的地址(这是很简单的),然后通过dataAccess层写到数据库中。
也可以在SQLSERVER内读注册表:declare @s varchar(200)
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName','ComputerName',@s output
print @s
取得IP的方式与上面相同,你找找吧。XP_REGREAD读出IP不是难事,你自已试试吧
是不是这儿的高人,都不爱用VB的?
这个功能用控件做好像并不困难。
或者在数据库中建立一个表存储客户端状态,当客户端连接数据库后就在该表中添加记录,写入你想得到的所有信息,并可以设置一个连接断开状态位。这样你就可以访问这个表得到所有的机器状态了包括曾经访问过的机器资料,前提是必须运行你写的客户端。