実行開始時にトリガーで値を取得したい。ただし、パラメーター オプションを使用して値を取得することは、トリガーでは使用できません。Context_info
そこで、その特定の値を 1 つの変数に格納し、それをストアド プロシージャに渡すことにしました。
そして、トリガーでその値を取得しています。しかし、まだ null 値しか取得していません。しかし、パラメータをストアドプロシージャに渡して手動で試してみましたが、正しく実行され、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))