use model
go
create proc send_message as begin
create table #tspid(
spid int null,
ecid int null,
status varchar(200) null,
loginname varchar(200) null,
hostname varchar(200) null,
blk bit null,
dbname varchar(200) null,
cmd varchar(200)
)insert into #tspid(spid,ecid,status,loginname,hostname,blk,dbname,cmd) exec sp_who create table #userip(id int identity,hostname varchar(200),txt varchar(8000))declare @cmdStr varchar(100), @hostName varchar(30), @userip varchar(20), @sendstr varchar(100)declare tspid cursor for select hostname from #tspid where spid>50
open tspid fetch next from tspid into @hostname
WHILE @@FETCH_STATUS = 0
begin
create table #table (id int identity,txt varchar(8000))
select @cmdStr='ping '+@hostName
insert #table(txt) exec master..xp_cmdshell @cmdStr
insert #userip select @hostname,substring(txt,charindex('[',txt)+1,charindex(']',txt)-charindex('[',txt)-1) from #table where id=2
fetch next from tspid into @hostname
end select * from #userip
drop table #tspid ,#userip
endgo--调用:
exec send_message
go
create proc send_message as begin
create table #tspid(
spid int null,
ecid int null,
status varchar(200) null,
loginname varchar(200) null,
hostname varchar(200) null,
blk bit null,
dbname varchar(200) null,
cmd varchar(200)
)insert into #tspid(spid,ecid,status,loginname,hostname,blk,dbname,cmd) exec sp_who create table #userip(id int identity,hostname varchar(200),txt varchar(8000))declare @cmdStr varchar(100), @hostName varchar(30), @userip varchar(20), @sendstr varchar(100)declare tspid cursor for select hostname from #tspid where spid>50
open tspid fetch next from tspid into @hostname
WHILE @@FETCH_STATUS = 0
begin
create table #table (id int identity,txt varchar(8000))
select @cmdStr='ping '+@hostName
insert #table(txt) exec master..xp_cmdshell @cmdStr
insert #userip select @hostname,substring(txt,charindex('[',txt)+1,charindex(']',txt)-charindex('[',txt)-1) from #table where id=2
fetch next from tspid into @hostname
end select * from #userip
drop table #tspid ,#userip
endgo--调用:
exec send_message
所有连接本机的计算机名,IP地址
--*/create table #tb(id int identity(1,1),hostname nchar(128),loginname nchar(128),net_address nchar(12),net_ip nvarchar(15))
insert into #tb(hostname,net_address,loginname)
select distinct hostname,net_address,loginame from master..sysprocesses where hostname<>''declare @id int,@sql varchar(500)
select @id=max(id) from #tbcreate table #ip(id int,a varchar(8000))
while @id>0
begin
select @sql='ping '+hostname from #tb where id=@id
insert #ip(a) exec master..xp_cmdshell @sql
update #ip set id=@id where id is null
set @id=@id-1
endupdate #tb set net_ip=left(a,patindex('%:%',a)-1)
from #tb a inner join (
select id,a=substring(a,patindex('Ping statistics for %:%',a)+20,20) from #ip
where a like 'Ping statistics for %:%') b on a.id=b.idselect * from #tbdrop table #tb,#ip