Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्या ट्रिगर के लिए डेटा को संशोधित करने वाली संग्रहीत प्रक्रिया का नाम ढूंढना संभव है?

आप कोशिश कर सकते हैं:CONTEXT_INFO

यहां एक CONTEXT_INFO उपयोग उदाहरण दिया गया है:

प्रत्येक प्रक्रिया में सम्मिलित करें/हटाएं/अपडेट करें जिसे आप ट्रैक करना चाहते हैं, इसे जोड़ें:

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

यहाँ मान को पुनः प्राप्त करने के लिए ट्रिगर का भाग दिया गया है:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर 2012, भूगोल। ST शामिल है, गलत परिणाम?

  2. मैं MS SQL सर्वर में किसी तालिका को किसी अन्य फ़ाइल समूह में कैसे स्थानांतरित कर सकता हूँ?

  3. sp_ddopen - यह क्या कर रहा है?

  4. SQL सर्वर सिमेंटिक सर्च के साथ विंडोज फाइल सिस्टम पर दस्तावेजों का भंडारण और विश्लेषण - भाग 2

  5. SQL सर्वर में क्वेरी कैप्चर करने के लिए XEvent Profiler का उपयोग करें