1

我想在触发器开始执行时获得一些价值。但是,使用参数选项获取值在触发器中不可用。所以我决定将该特定值存储在一个变量中并将其传递给Context_info我的存储过程。

我在触发器中得到了这个值。但我仍然只得到空值。但是我通过将参数传递给存储过程手动尝试,它正确执行并且Context_info值也在该存储过程中正确显示。

但是当我在触发器中获得这个值时,它显示为 NULL。而且sys.dm_exec_sessions表中的context_info值也没有更新,但last_request_start_time正在last_request_end_time更新。

谁能指导我在哪里出错?

这是我的存储过程和触发器:

ALTER PROCEDURE [dbo].[dm_ApptResRecurrReasonRelViewSel]    
   (@IDLocation int,    
    @IDApptResource int,    
    @StartDate datetime,    
    @IDApptResRecurr int,  
    @ClientID varchar(50) )    
AS    
    SET NOCOUNT ON;    

    DECLARE @context_info varbinary(100);  
    SET @context_info = CAST(@ClientID as varbinary(100));  

    SET CONTEXT_INFO @context_info;  

     etc....

扳机

ALTER TRIGGER [dbo].[xC2C_ADT_Upd] 
ON [dbo].[dmAppt] 
FOR INSERT, UPDATE   
AS   
BEGIN  
    If Not Exists (Select top 1* from inserted)  
       Return  

    declare @ADT_ID UniqueIdentifier  
    declare @personuid int   
    declare @ApptID int  

    select @personuid = PID, @ApptID = IDAppt 
    from inserted  

    set @ADT_ID = NewID()  

    declare @MSG_Type varchar(1)  
    declare @AddDate datetime  
    declare @LastUpdateDate datetime  
    declare @ServerID [varchar](50)  
    declare @ClientDB [varchar](max)  
    declare @ClientID [varchar](50)  

    set @ServerID = Convert(varchar(50),CONNECTIONPROPERTY('local_net_address'))   
    set @ClientDB = db_name()  

    set @ClientID = CAST(CONTEXT_INFO() as varchar(50))        
4

0 回答 0