Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah mungkin bagi pemicu untuk menemukan nama prosedur tersimpan yang mengubah data?

Anda dapat mencoba:CONTEXT_INFO

berikut adalah contoh penggunaan CONTEXT_INFO:

dalam setiap prosedur melakukan penyisipan/penghapusan/pembaruan yang ingin Anda lacak, tambahkan ini:

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

di sini adalah bagian dari pemicu untuk mengambil nilai:

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. Membaca file teks dengan SQL Server

  2. kesalahan, string, atau data biner akan terpotong saat mencoba memasukkan

  3. Apa pentingnya 1/1/1753 di SQL Server?

  4. Bangun dan Deploy paket SSIS menggunakan VSTS

  5. Dapatkan 1 baris teratas setiap grup