给当前连接的用户发送消息 展开服务器组,然后展开服务器。展开"管理",然后展开"当前活动"。单击"进程信息"。 
服务器的当前活动即会显示在详细信息窗格中。
在详细信息窗格中,右击一个进程 ID,然后单击"发送消息"命令。 
说明  当 SQL Server 企业管理器在 Microsoft® Windows® 98 上运行时,不可能向用户发送消息。在"消息"框中键入消息。另外,可选择"使用主机名",然后输入计算机名以便将消息发送到指定的计算机。 发送不成功是因为你把消息发送到了后台进程,尝试以按用户发送方式把消息发送给一个running的进程。

解决方案 »

  1.   

    我操作系统是win2000高级服务器版的。
    "可选择"使用主机名",然后输入计算机名以便将消息发送到指定的计算机。 "
    不想输入计算机名称,因为客户端有近100个点,我不知道当前进程是哪个机器引起的.
      

  2.   

    客户端全部都是通过sa用户的权限登录SQL Server服务器的???
      

  3.   

    --给当前连接SQL的所有计算机发信息的示例存储过程create proc p_sendmsg
    @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
      

  4.   

    to :zjcxc(邹建)1.如何确定主机名称呢,根本没有名称,我用事件查看器看hostname也是空空的
    2.存储过程怎么实现?
    能否详细点
      

  5.   

    我试了很多边,用运行程序进行操作,然后查看产生进程的hosname ,全不都是空的
    但是用查询分析器登陆连接产生的进程就能查看到hosname
      

  6.   

    1.主机名的问题
      企业管理器--展开你的SQL实例--管理--当前活动--进程信息--拖动右下的滚动条向右,会看到主机这列,这列就是该进程的主机名
      如果是系统进程(SQL自己产生的进程),则主机这列的值是空的,用户进程是肯定有主机名的
    2.向指定的进程的计算机发信息,改一下存储过程就行了
      

  7.   

    --给指定进程发信息create proc p_sendmsg
    @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
      

  8.   

    我客户端的pb程序(全部用sa连接)在操作时产生的进程可以说说有的主机名都是空的,所以用你的方法我不能实现发消息.你的可户端程序产生的进程都带有主机名称吗,我测试了一下午了,主机名称始终是空的.我也用事件查看器进行了追踪,但是hosname还是空的,这跟程序有关系吗?非常感谢大家参与
      

  9.   

    可以把各进程中的net_address转换为ip地址。直接向ip地址发送就行了
      

  10.   

    不知道你的PB用什么方式连接数据库的影响主机名的设置还有连接字符串中的workstation id,如果这个设置了,则主机名显示的是这个设置的值,你检查一下你的PB程序,看看是否设置了这个
      

  11.   

    net_address转换为ip地址:
    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
      

  12.   

    我也有 fenglaotou(星期天)遇到的情况在客户端运行hosname都是空的,而用查询分析器好像能正确得到值,我也搞不懂.
    这个贴子很好.支持ljian_mail(新手) 不要生气
      

  13.   

    检查连接字符串中的workstation id了么?