Context_info值在触发器中为null

时间:2016-05-05 08:57:56

标签: sql stored-procedures triggers context-info set-context-info

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

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

但是当我在触发器中获取此值时,它显示为NULL。而sys.dm_exec_sessionscontext_info值也未更新,但last_request_start_timelast_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))        

0 个答案:

没有答案