監控目前全部鏈接SQL SERVER的用戶信息

原文: 監控目前全部鏈接SQL SERVER的用戶信息

if object_id('p_getlinkinfo','P')is not null drop proc p_getlinkinfo go
create proc p_getlinkinfo @dbname sysname=null, --要查詢的數據庫名,默認表示全部 
@includeip bit=0 --是否顯示IP信息 
as 
begin
declare @dbid int 
set @dbid=db_id(@dbname) if object_id('tempdb..#tb')is not null drop table #tb if object_id('tempdb..#ip')is not null drop table #ip 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, net_ip, prog_name from #tb end 
go 
exec p_getlinkinfo @dbname='master',@includeip=1
  消息15281,級別16,狀態1,過程xp_cmdshell,第1 行
  SQL Server 阻止了對組件'xp_cmdshell' 的過程'sys.xp_cmdshell' 的訪問,由於此組件已做爲此服務器安全配置的一部分而被關閉。系統管理員能夠經過使用sp_confi  gure 啓用'xp_cmdshell'。有關啓用'xp_cmdshell' 的詳細信息,請參閱SQL Server 聯機叢書中的"外圍應用配置器"。

SELECT * FROM sys.configurations ORDER BY name ; sp_configure 'show advanced options', 1; go reconfigure; go sp_configure 'xp_cmdshell', 1; go reconfigure; go
相關文章
相關標籤/搜索