zoukankan      html  css  js  c++  java
  • 曲演杂坛--查看那个应用连接到数据库

    在做数据库迁移或其他维护的时候,需要应用端暂停访问,我们可以通过视图查看到连接到数据的IP,对于ADO.NET访问的话,我们还可以查看到连接过来的应用名称,但是对于JAVA程序使用JDBC来访问时,我们就很难知道具体是哪个应用程序在访问我们的数据库,尤其是应用服务器上运行着很多的应用的时候,我们该如何去做呢?

    --=============================================

    首先对于ADO.NET的访问,通过以下代码

    SELECT  [net_ip].session_id ,
            [net_ip].connect_time ,
            [net_ip].net_transport ,
            [net_ip].client_net_address ,
            [net_ip].client_tcp_port ,
            SE.host_process_id,
            [net_ip].local_net_address ,
            [net_ip].local_tcp_port ,
            [hostname].hostname ,
            [hostname].[DB_name] ,
            [hostname].net_address ,
            [hostname].loginame ,
            [hostname].program_name ,
            [net_ip].num_reads ,
            [net_ip].num_writes ,
            [hostname].text
    FROM    sys.dm_exec_connections AS [net_ip]
            JOIN ( SELECT DISTINCT
                            hostname ,
                            spid ,
                            DB_NAME(sp.dbid) AS [DB_name] ,
                            net_address ,
                            loginame ,
                            program_name ,
                            text
                   FROM     master..sysprocesses SP
                            CROSS APPLY sys.dm_exec_sql_text(sp.sql_handle)
                   WHERE    hostname IS NOT NULL
                            AND hostname <> ''
                 ) AS hostname ON [net_ip].session_id = [hostname].spid
                 LEFT JOIN sys.dm_exec_sessions SE 
                 ON [net_ip].session_id=SE.session_id
                 

    我们可以根据local_net_address来定位请求的服务器IP,通过host_process_id来查看发送该请求的PID,登陆到请求服务器上,使用任务管理器来找到PID对于的应用。

    --=============================================

    首先对于JDBC的访问,对于的host_process_id为0,无法为我们提供有效信息,我们可以通过client_tcp_port来定位应用程序。

    首先登陆到请求的服务器上,打开CMD窗口,运行NETSTAT -ano命令来查看服务器的端口使用

    在本地地址这列查找client_tcp_port的值,找到对于行后,再查找对于的PID,在依据PID查找运用。

    哇哈哈,是不是很厉害。

    小诀窍:

    在CMD里运行NETSTAT -ano>d: et.txt,这样结果就保存到d: et.txt中,在通过文本编辑器查找对应的client_tcp_port,更方便快捷。

    --====================================================

    半夜加班来一篇水文,妹子镇压下牛鬼蛇神

  • 相关阅读:
    MSSQLSERVER数据库 变量和批处理
    MSSQLSERVER数据库 事务
    MSSQLSERVER数据库 使用C#来操作事务
    MSSQLSERVER数据库 视图
    Delphi中DBGrid行列颜色设置
    C#中调用SQL存储过程(带输入输出参数的例子)
    用Visual C#调用Windows API函数
    c#日期时间的操作的函数总结[转]
    C# 序列化与反序列化
    利用C#事务处理对数据库进行多重操作
  • 原文地址:https://www.cnblogs.com/TeyGao/p/3836905.html
Copyright © 2011-2022 走看看