机器上安装了sqlserver 2000 桌面版(msde),机器里有若干应用程序,我现在想弄清楚这个桌面版是哪个程序使用的,
就是说怎么判断一个应用程序使用的库类型。

解决方案 »

  1.   

    如果程序要是运行起来呢?怎么判断它使用的数据库的类型。
    我就是要找出来哪个程序是需要sqlserver支持的。
    唉,msde真的很讨厌
      

  2.   

    --try
    select distinct hostname,
             db_name(dbid),
             net_address,
             loginame,
             program_name
    from master..sysprocesses   
    where hostname!=''
      

  3.   

    SELECT hostname,program_name FROM MASTER.dbo.sysprocesses
      

  4.   

    这个貌似需要用前台程序控制,你写个windows服务,一直运行,当检查到有需要连接的SQL的时候在做其他的动作。
      

  5.   

    select distinct hostname,
             db_name(dbid),
             net_address,
             loginame,
             program_name
    from master..sysprocesses   
    where hostname!=''
    这个需要在查询分析器里运行,msde分析器,管理器都没有。
    还有没有其他方法,比如通过操作系统的记录来分析或者通过当前运行的进程什么的来判断。
      

  6.   

    “通过当前运行的进程来判断”是可以的,不过麻烦一些。
    1、如果应用程序通过 tcp/ip 连接到 MSDE
    运行 netstat.exe -anb 检查应用进程正在连接的 tcp 端口(如果是默认实例,该端口为 1433/tcp),由该端口找到侦听的进程是否是 MSDE 。(这些信息都包括在 netstat.exe 运行结果中)2、如果应用程序通过 共享内存 连接到 MSDE
    用 procexp.exe 检查应用进程打开的句柄(handle),找到 \device\namedpipe\... 句柄。看看其最后一部分是否对应 MSDE 的实例名。3、如果应用程序通过 命名管道 连接到 MSDE
    也是用  procexp.exe 检查应用进程打开的句柄(handle),找到 \device\namedpipe\... 句柄,不过这个是 MSDE 正在侦听的命名管道。
    再在 procexp.exe 中查找具有这个命名管道(handle)的其他进程,看看该进程是否对应 MSDE。
      

  7.   

    以上假设客户端应用程序与 MSDE 都在本地系统中。其实,在系统中安装一个 SQL Server 客户端一点也不麻烦,用 osql 连接 msde,运行 select ... from sysprocesses 查询是很方便的。