获取当前可以访问的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

解决方案 »

  1.   

    2,可以用
    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'
      

  2.   

    谢谢duckcn(duck)
    第一个问题,我是指在客户机连接服务器的数据库时,在服务器方判断该客户机的计算机名与ip地址。
    用status = 'active'查找出的是多个已连接的用户,好像不能解决这个问题吧?
      

  3.   

    sql server里怎样实现我不清楚,既然是VB同道,就说一下我们公司的作法:连接数据库的程序在登陆时都要用户名和密码,这时就可以截取用户名,(验证密码时自然要用户名了)程序里在登陆模块加入了一些代码,取机器名和ip,包括上面的用户名存入数据库,作为日志备查。
      

  4.   

    用superscan扫描可以,不管他是不是该了端口!
      

  5.   

    to cityeremite:
    请把取得机器名与ip地址的代码贴出来好吗?我瞻仰瞻仰 :)
    谢谢to toupdate:
    您的意思是客户机扫描服务器端口吗?我是指在服务器方判断登陆客户机的计算机名与ip地址
    如果我理解有误,说详细些行吗?
      

  6.   

    获得服务器名:SELECT CONVERT(varchar(20), SERVERPROPERTY('MachineName'))
    参考:
    select @@SERVERNAME
      

  7.   

    我也认为客户机器与IP信息应该属于表现层的东西,不应该在数据库里解决,比如,WEB服务器与数据库的连接一般只有一个,是所有WEB客户共用的,你在数据库里取得的客户机器名及地址名全是WEB服务器的,这就没有意义了!
    在这种情况下应该在IIS会话中取出远程WEB用户的地址(这是很简单的),然后通过dataAccess层写到数据库中。
      

  8.   

    mnjrh(SQL太难了) 的方法应可以读出计算机。
    也可以在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不是难事,你自已试试吧
      

  9.   

    节后结贴!大伙儿有什么高招,往这儿使啊!特别是问题1,有否VB代码?最好详细些。俺是菜鸟,多包涵。
    是不是这儿的高人,都不爱用VB的?
      

  10.   

    扫描某ip段的计算机的指定端口(默认1433),如果端口占用自然是对应的应用已经启动,知道ip和端口后其他的就很简单了。
    这个功能用控件做好像并不困难。
    或者在数据库中建立一个表存储客户端状态,当客户端连接数据库后就在该表中添加记录,写入你想得到的所有信息,并可以设置一个连接断开状态位。这样你就可以访问这个表得到所有的机器状态了包括曾经访问过的机器资料,前提是必须运行你写的客户端。