儲存過程 獲取連線SQL伺服器的資訊

2021-05-09 04:46:57 字數 2455 閱讀 7944

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(n'[dbo].[p_getlinkinfo]')   and   objectproperty(id,   n'isprocedure')   =   1)  

drop   procedure   [dbo].[p_getlinkinfo]  

go  

/*--獲取連線sql伺服器的資訊  

所有連線本機的:操作的資料庫名,計算機名,使用者名稱,網絡卡實體地址,ip位址,程式名  

--鄒建   2003.11--*/  

/*--呼叫示例  

--顯示所有本機的連線資訊  

exec   p_getlinkinfo  

--顯示所有本機的連線資訊,包含ip位址  

exec   p_getlinkinfo   @includeip=1  

--顯示連線指定資料庫的資訊  

exec   p_getlinkinfo   '客戶資料'  

--*/  

create   proc   p_getlinkinfo  

@dbname   sysname=null, --要查詢的資料庫名,預設查詢所有資料庫的連線資訊  

@includeip   bit=0 --是否顯示ip位址,因為查詢ip位址比較費時,所以增加此控制  

as  

declare   @dbid   int  

set   @dbid=db_id(@dbname)  

create   table   #tb(id   int   identity(1,1),dbname   sysname,hostname   nchar(128),loginname   nchar(128),net_address   nchar(12),net_ip   nvarchar(15),prog_name   nchar(128))  

insert   into   #tb(hostname,dbname,net_address,loginname,prog_name)  

select   distinct   hostname,db_name(dbid),net_address,loginame,program_name   from   master..sysprocesses  

where   hostname<>''   and   (@dbid   is   null   or   dbid=@dbid)  

if   @includeip=0   goto   lb_show     --如果不顯示ip位址,就直接顯示  

declare   @sql   varchar(500),@hostname   nchar(128),@id   int  

create   table   #ip(hostname   nchar(128),a   varchar(200))  

declare   tb   cursor   local   for   select   distinct   hostname   from   #tb  

open   tb  

fetch   next   from   tb   into   @hostname  

while   @@fetch_status=0  

begin  

set   @sql='ping   '+@hostname+'   -a   -n   1   -l   1'  

insert   #ip(a)   exec   master..xp_cmdshell   @sql  

update   #ip   set   hostname=@hostname   where   hostname   is   null  

fetch   next   from   tb   into   @hostname  

end  

update   #tb   set   net_ip=left(a,patindex('%:%',a)-1)  

from   #tb   a   inner   join   (  

select   hostname,a=substring(a,patindex('ping   statistics   for   %:%',a)+20,20)   from   #ip  

where   a   like   'ping   statistics   for   %:%')   b   on   a.hostname=b.hostname  

lb_show:  

select   id,資料庫名=dbname,客戶機名=hostname,使用者名稱=loginname  

,網絡卡實體地址=net_address,ip位址=net_ip,應用程式名稱=prog_name   from   #tb  

go  

獲取連線SQL伺服器的資訊

獲取連線sql伺服器的資訊 所有連線本機的 操作的資料庫名,計算機名,使用者名稱,網絡卡實體地址,ip位址,程式名 鄒建 2003.11 引用請保留此資訊 呼叫示例 顯示所有本機的連線資訊 exec p getlinkinfo 顯示所有本機的連線資訊,包含ip位址 exec p getlinkinf...

獲取連線SQL伺服器的資訊

獲取連線sql伺服器的資訊 所有連線本機的 操作的資料庫名,計算機名,使用者名稱,網絡卡實體地址,ip位址,程式名 鄒建 2003.11 引用請保留此資訊 呼叫示例 顯示所有本機的連線資訊 exec p getlinkinfo 顯示所有本機的連線資訊,包含ip位址 exec p getlinkinf...

SQL 儲存過程連線遠端伺服器資料庫的方法

一 建立鏈結sql server伺服器,通常有兩種情況 第一種情況,產品選 sql server exec sp addlinkedserver server linkservername srvproduct n sql server 這種情況,server linkservername 就是要鏈...