sql >> Databáze >  >> RDS >> Sqlserver

Je možné, aby spouštěč našel název uložené procedury, která upravila data?

můžete zkusit:CONTEXT_INFO

zde je příklad použití CONTEXT_INFO:

v každé proceduře provádějící vkládání/mazání/aktualizaci, kterou chcete sledovat, přidejte toto:

DECLARE @string        varchar(128)
       ,@CONTEXT_INFO  varbinary(128)
SET @string=ISNULL(OBJECT_NAME(@@PROCID),'none')
SET @CONTEXT_INFO =cast('Procedure='[email protected]+REPLICATE(' ',128) as varbinary(128))
SET CONTEXT_INFO @CONTEXT_INFO

--do insert/delete/update that will fire the trigger

SET CONTEXT_INFO 0x0 --clears out the CONTEXT_INFO value

zde je část spouštěče pro načtení hodnoty:

DECLARE @string         varchar(128)
       ,@sCONTEXT_INFO  varchar(128)
SELECT @sCONTEXT_INFO=CAST(CONTEXT_INFO() AS VARCHAR) FROM master.dbo.SYSPROCESSES WHERE [email protected]@SPID

IF LEFT(@sCONTEXT_INFO,9)='Procedure'
BEGIN
    SET @string=RIGHT(RTRIM(@sCONTEXT_INFO),LEN(RTRIM(@sCONTEXT_INFO))-10)
END
ELSE
BEGIN --optional failure code
    RAISERROR('string was not specified',16,1)
    ROLLBACK TRAN
    RETURN
END

..use the @string


  1. Jak vytvořit tabulku se dvěma nebo více cizími klíči pomocí místnosti Android?

  2. php čtení bitového pole mysql vrací podivný znak

  3. opencart seo přepisování adresy URL

  4. Vypočítejte pracovní dobu mezi dvěma daty