Sql server 如何禁用存储过程中的sp_send_dbmail用法

Sql server 如何禁用存储过程中的sp_send_dbmail用法,sql-server,stored-procedures,Sql Server,Stored Procedures,我接管了一个写得很差的系统,执行了一个特定的存储过程,它似乎在调用sp_send_dbmail。目前,我甚至没有在存储过程中看到调用sp_send_dbmail的地方。在这个阶段,我正在寻找一种方法,从存储过程中永久禁用它,甚至从哪里调用它。也许只有当存储过程出错时才会调用它?如果是的话,在哪里设置 我的存储过程如下所示: USE [pis] GO /****** Object: StoredProcedure [dbo].[deal_note] Script Date: 4/15/20

我接管了一个写得很差的系统,执行了一个特定的存储过程,它似乎在调用sp_send_dbmail。目前,我甚至没有在存储过程中看到调用sp_send_dbmail的地方。在这个阶段,我正在寻找一种方法,从存储过程中永久禁用它,甚至从哪里调用它。也许只有当存储过程出错时才会调用它?如果是的话,在哪里设置

我的存储过程如下所示:

USE [pis]
GO
/****** Object:  StoredProcedure [dbo].[deal_note]    Script Date: 4/15/2015 7:25:27 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[deal_note](
    @keycode        varchar(50),
    @deal_id        int,
    @notes          varchar(max)
) as
/*



    select * from dbo.consumernotes
*/
begin
    set nocount on
    --parse key and code
    declare @key            int
    declare @code           int
    select
        @key    = left(@keycode, charindex('-',@keycode)-1),
        @code   = substring( @keycode, charindex('-', @keycode)+1, len(@keycode) )

    declare @user_id        int

    select top 1
        @user_id        = k.[user_id]
    from acc.Keys k
    where k.id = @key
        and k.code = @code

    insert into dbo.ConsumerNotes 
        (deal_id, notes, created_by )
    select @deal_id, @notes, @user_id 

    if @@rowcount>0
        select '0' [code], 'note' [section], 'Record updated.' [message]
    else
        select '1' [code], 'note' [section], 'Error updating record..' [message]


end--procedure

必须暂时停止数据库邮件,请在过程开始时添加以下语句:

EXECUTE MSDB.dbo.sysmail_stop_sp
在该过程结束时,您需要再次启动数据库邮件,这可以通过以下方式完成:

EXECUTE MSDB.dbo.sysmail_start_sp

检查两件事:表dbo.ConsuemrNotes的触发器和过程的调用位置选择“1”[code],“note”[section],“Error updateing record..”[message]表明潜在错误在其他地方,我也会检查sql代理作业,可能他们在那里设置了某种自定义错误检查。