select   连接数=count(distinct   hostname)   
  from   master..sysprocesses   
  where   hostname<>''   and   dbid=db_id('要查询的库名')如果在局域网中能正常取出连接的程序数量,但如果数据库是在远程的主机上,比如虚拟主机上就每次都是0,是什么原因?有其他方法吗?

解决方案 »

  1.   

    如何在SQL   SERVER中建立与其它SQL   SERVER的连接 
    创建一台名为   Server2   的链接服务器: 
    USE   master 
    EXEC   sp_addlinkedserver   'server2 ',N 'SQL   Server ' 
    创建一个映射,使用帐号   Sa   和密码   Password   连接到链接服务器   Server2: 
    EXEC   sp_addlinkedsrvlogin   'Server2 ',   'false ',   NULL,   'Sa ',   'Password ' 
    查询数据: 
    SELECT   *   FROM   Server2.dbname.dbo.tablename 
      

  2.   

    楼上的朋友都没理解我的意思哈。程序是用Ado来操作sql的,先肯定是连接数据库,然后执行sql语句,完成后调用close关闭连接。
    同样的程序,执行那段读取连接数的sql语句,如果连接的数据库是局域网的,就正确,如果连接的是远程数据库,就是0。但如果用SQL Server Management Studio来执行那段又能得到1,就是SQL Server Management Studio本身的一个连接。
      

  3.   

    是不是局域网调用close关闭连接后还有连接池或什么缘故并没有关闭,而远程数据库直接关闭了连接?
      

  4.   

    按常规情况,这样的语句查询没有问题:
    select   连接数=count(distinct   hostname)   
      from   master..sysprocesses   
      where   hostname<>''   and   dbid=db_id('要查询的库名')
    and spid > 50