给当前连接的用户发送消息 展开服务器组,然后展开服务器。展开"管理",然后展开"当前活动"。单击"进程信息"。
服务器的当前活动即会显示在详细信息窗格中。
在详细信息窗格中,右击一个进程 ID,然后单击"发送消息"命令。
说明 当 SQL Server 企业管理器在 Microsoft® Windows® 98 上运行时,不可能向用户发送消息。在"消息"框中键入消息。另外,可选择"使用主机名",然后输入计算机名以便将消息发送到指定的计算机。 发送不成功是因为你把消息发送到了后台进程,尝试以按用户发送方式把消息发送给一个running的进程。
服务器的当前活动即会显示在详细信息窗格中。
在详细信息窗格中,右击一个进程 ID,然后单击"发送消息"命令。
说明 当 SQL Server 企业管理器在 Microsoft® Windows® 98 上运行时,不可能向用户发送消息。在"消息"框中键入消息。另外,可选择"使用主机名",然后输入计算机名以便将消息发送到指定的计算机。 发送不成功是因为你把消息发送到了后台进程,尝试以按用户发送方式把消息发送给一个running的进程。
"可选择"使用主机名",然后输入计算机名以便将消息发送到指定的计算机。 "
不想输入计算机名称,因为客户端有近100个点,我不知道当前进程是哪个机器引起的.
@msg nvarchar(1000) --要发送的信息内容
as
declare @s nvarchar(4000)
set @msg=replace(isnull(@msg,''),'"','""')
declare tb cursor local for
select distinct 'net send "'+rtrim(hostname)+'" "'+@msg+'"'
from sysprocesses where hostname<>''
open tb
fetch tb into @s
begin
exec master..xp_cmdshell @s,no_output
print @s
fetch tb into @s
end
close tb
deallocate tb
go--调用
exec p_sendmsg 'test'
go--删除测试
drop proc p_sendmsg
2.存储过程怎么实现?
能否详细点
但是用查询分析器登陆连接产生的进程就能查看到hosname
企业管理器--展开你的SQL实例--管理--当前活动--进程信息--拖动右下的滚动条向右,会看到主机这列,这列就是该进程的主机名
如果是系统进程(SQL自己产生的进程),则主机这列的值是空的,用户进程是肯定有主机名的
2.向指定的进程的计算机发信息,改一下存储过程就行了
@msg nvarchar(1000), --要发送的信息内容
@spid int --进程号
as
declare @s nvarchar(4000)
set @msg=replace(isnull(@msg,''),'"','""')
select top 1 @s='net send "'+rtrim(hostname)+'" "'+@msg+'"'
from master..sysprocesses where hostname<>'' and spid=@spid
if @@rowcount=0
raiserror('指定的进程无效!',1,16)
else
exec master..xp_cmdshell @s,no_output
go--调用
exec p_sendmsg 'test',545
go--删除测试
drop proc p_sendmsg
create PROCEDURE dbo.SP_SPIDtoIP @SPID intAS-- SPID to MAC
DECLARE @MAC as varchar(12)SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID-- MAC to IP
DECLARE @MACDisplay as varchar(18)
DECLARE @IP as varchar(15)CREATE TABLE #temp (OUTPUT varchar(255) null)
SET NOCOUNT ON
INSERT INTO #temp EXEC master..xp_cmdshell 'arp -a'
SELECT @MACDisplay = LEFT(@MAC, 2) + '-' + SUBSTRING(@MAC, 3, 2) + '-' + SUBSTRING(@MAC, 5, 2) + '-' + SUBSTRING(@MAC, 7, 2) + '-' + SUBSTRING(@MAC, 9, 2) + '-' + SUBSTRING(@MAC, 11, 2)SELECT @IP = SUBSTRING(output, 3, 15) FROM #temp WHERE output LIKE '%' + @MACDisplay + '%'dROP TABLE #temp
SET NOCOUNT OFF
这个贴子很好.支持ljian_mail(新手) 不要生气