1

実行開始時にトリガーで値を取得したい。ただし、パラメーター オプションを使用して値を取得することは、トリガーでは使用できません。Context_infoそこで、その特定の値を 1 つの変数に格納し、それをストアド プロシージャに渡すことにしました。

そして、トリガーでその値を取得しています。しかし、まだ null 値しか取得していません。しかし、パラメータをストアドプロシージャに渡して手動で試してみましたが、正しく実行され、Context_info値もそのストアドプロシージャに正しく表示されています。

しかし、トリガーでこの値を取得すると、NULL が表示されます。また、sys.dm_exec_sessionsテーブルのcontext_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))        
4

0 に答える 0