逍遥一派 发表于 2015-1-16 14:07:10

怎样在SqlServer中猎取前端毗连的IP地点,盘算机名等信息

Mysql的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。在一些需求中,大概我们必要晓得毗连到SqlServer的前端程序的一些体系信息,好比前端毗连的盘算机称号,IP地点,甚么时分入手下手哀求毗连,甚么时分停止毗连等信息。
假如你对SqlServer的体系函数或视图不太懂得,这个功效看起来仿佛对照庞大,而实践上,SqlServer的静态办理视图已给我们供应了这些信息,上面我们来看两个静态办理视图。
1、Sys.dm_exec_Sessions
这个视图中供应了一切毗连sqlserver的客户真个一些信息,上面是Sys.dm_exec_Sessions前往的列:
列名数据范例申明Session_idsmallint标识与每一个举动主毗连联系关系的会话。login_timedatetime创建会话的工夫。host_namenvarchar(128)预会话联系关系的主机。program_namenvarchar(128)预会话联系关系的程序。host_process_idint预会话联系关系的历程ID。client_versionint客户端毗连到服务器所用的接口版本。client_interface_namenvarchar(32)客户端毗连到服务器所用的接口称号。security_idvarbinary(85)与登录名联系关系的MicrosoftWindows平安ID。login_namenvarchar(128)预会话联系关系的SQL登录名。nt_domainnvarchar(128)从中创建会话毗连的域。nt_user_namenvarchar(128)预会话联系关系的用户名。statusnvarchar(30)会话的形态。大概的值:1,运转-以后正在运转一个或多个哀求
2,就寝-以后没有运转任何哀求
3,休眠-会话处于登录前形态
context_infovarbinary(128)会话的CONTEXT_INFO值。cpu_timeint该会话所占用的CPU工夫(毫秒)。memory_usageint该会话所占用的8KB内存页数。total_scheduled_timeint企图内含哀求的会话的实行所耗用的总计工夫(毫秒)。total_elapsed_timeint自会话创建以来已耗用的工夫(毫秒)。endpoint_idint预会话联系关系的端点的ID。last_request_start_timedatetime比来一次会话哀求的入手下手工夫。这包含以后正在实行的哀求。last_request_end_timedatetime比来一次会话哀求的完成工夫。readsbigint在该会话时代该会话中的哀求所实行的读取次数。Writesbigint在该会话时代该会话中的哀求所实行的写进次数。logical_readsbigint已对该会话实行的逻辑读取数。is_user_processbit假如会话是体系会话,则为0。不然,为1。text_sizeint会话的TEXTSIZE设置。languagenvarchar(128)会话的LANGUAGE设置。date_formatnvarchar(3)会话的DATEFORMAT设置。date_firstsmallint会话的DATEFIRST设置。quoted_identifierbit会话的QUOTED_IDENTIFIER设置。arithabortbit会话的ARITHABORT设置。ansi_null_dflt_onbit会话的ANSI_NULL_DFLT_ON设置。ansi_defaultsbit会话的ANSI_DEFAULTS设置。ansi_warningsbit会话的ANSI_WARNINGS设置。ansi_paddingbit会话的ANSI_PADDING设置。ansi_nullsbit会话的ANSI_NULLS设置。concat_null_yields_nullbit会话的CONCAT_NULL_YIELDS_NULL设置。transaction_isolation_levelsmallint会话的事件断绝级别。0=未指定1=未提交读取2=已提交读取3=可反复4=可序列化5=快照lock_timeoutint会话的LOCK_TIMEOUT设置。该值以毫秒计。deadlock_priorityint会话的DEADLOCK_PRIORITY设置。row_countbigint到今朝为止会话前往的行数。prev_errorint会话前往的比来一个毛病的ID。好比说,我们要看那些主机有毗连到了sqlserver服务器,可使用上面的sql语句:
selectdistincthost_namefromsys.dm_exec_Sessions

要看那些用户已毗连到sqlserver服务器:
selectdistinctlogin_namefromsys.dm_exec_Sessions

固然,使用下面的列,我们能够取得更多想要的客户端信息
2、Sys.dm_exec_connections
这个视图前往了毗连sqlserver服务器下面的每一个毗连的具体信息,上面是Sys.dm_exec_connections前往的列:
列名数据范例申明Session_idint标识与此毗连联系关系的会话。most_recent_Session_idint显现与此毗连联系关系的比来哀求的会话ID。connect_timedatetime毗连创建时的工夫戳。net_transportnvarchar(40)申明该毗连利用的物理传输协定。protocol_typenvarchar(40)指定负载的协定范例。此参数以后可辨别TDS(TSQL)和SOAP。protocol_versionint与此毗连联系关系的数据会见协定的版本。endpoint_idint与此毗连联系关系的端点的独一标识符。此endpoint_id可用于查询sys.endpoints视图。encrypt_optionnvarchar(40)申明是不是为此毗连启用了加密的布尔值。auth_schemenvarchar(40)指定与此毗连一同利用的SQLServer/NT身份考证。node_affinitysmallint显现与此毗连联系关系的SOS节点。num_readsint此毗连中已产生的读包次数。num_writesint此毗连中已产生的写数据包次数。last_readdatetime此毗连中上一次产生读操纵的工夫戳。last_writedatetime此毗连中上一次产生写操纵的工夫戳。net_packet_sizeint用于信息和数据的收集包的巨细。client_net_addressvarchar(40)与此服务器毗连的客户真个主机地点。client_tcp_portint与该毗连联系关系的客户机上的端标语。local_net_addressvarchar(40)显现此毗连的方针服务器的IP地点。只对利用TCP传输供应程序的毗连可用。local_tcp_portint假如此毗连利用TCP传输,则显现该毗连的方针服务器的TCP端口。connection_iduniqueidentifier对每一个毗连举行独一标识。parent_connection_iduniqueidentifier标识MARS会话正在利用的次要毗连。most_recent_sql_handlevarbinary(64)此毗连上实行的上一个哀求的SQL句柄。most_recent_sql_handle列一直与most_recent_Session_id列同步。好比,我要检察以后毗连的客户端IP与sqlserver地点服务器的IP,能够用上面的sql查询:
selectclient_net_address客户端IP,local_net_address服务器的IPfromsys.dm_exec_connectionswhereSession_id=@@spid

@@spid的感化是前往以后历程的会话ID。
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。)

第二个灵魂 发表于 2015-1-18 12:01:36

入门没那么困难,精通没那么容易

再见西城 发表于 2015-1-25 21:31:56

无法深入到数据库系统层面去了解和探究

乐观 发表于 2015-2-4 07:13:35

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。

小女巫 发表于 2015-2-9 18:46:26

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

冷月葬花魂 发表于 2015-2-27 18:30:26

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。

飘飘悠悠 发表于 2015-3-9 12:16:31

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

活着的死人 发表于 2015-3-16 23:36:11

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

老尸 发表于 2015-3-23 08:11:00

如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
页: [1]
查看完整版本: 怎样在SqlServer中猎取前端毗连的IP地点,盘算机名等信息