Ya ada caranya
Tabel untuk menyimpan hasil pemicu
USE [SOME_DATABASE]
GO
CREATE TABLE [dbo].[ddl_objects_log](
[date] [datetime] NULL DEFAULT (getdate()),
[login_name] [nvarchar](128) NULL,
[nt_user_name] [nvarchar](128) NULL,
[program_name] [nvarchar](128) NULL,
[host_name] [nvarchar](128) NULL,
[text] [xml] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Pemicunya
USE [SOME_DATABASE]
GO
/****** Object: DdlTrigger [ddl_db_trigger] Script Date: 22/01/2015 13:41:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [ddl_db_trigger]
ON DATABASE
FOR CREATE_FUNCTION,
CREATE_PROCEDURE,
CREATE_TABLE,
CREATE_TRIGGER,
CREATE_VIEW,
ALTER_FUNCTION,
ALTER_PROCEDURE,
ALTER_TABLE,
ALTER_TRIGGER,
ALTER_VIEW,
DROP_FUNCTION,
DROP_PROCEDURE,
DROP_TABLE,
DROP_TRIGGER,
DROP_VIEW,
CREATE_INDEX,
ALTER_INDEX,
DROP_INDEX
AS
BEGIN
set nocount ON
insert into ddl_objects_log(login_name, nt_user_name, program_name, host_name, text)
select login_name, nt_user_name, program_name, host_name, EVENTDATA() from sys.dm_exec_sessions WITH(NOLOCK) where session_id=@@SPID
set nocount OFF
END
GO
ENABLE TRIGGER [ddl_db_trigger] ON DATABASE
GO
Permintaan untuk Mengaudit hasil pemicu
USE [SOME_DATABASE]
GO
SELECT top 10
REPLACE(CONVERT(VARCHAR(250), text.query('data(/EVENT_INSTANCE/PostTime)')),'T', ' ') as modify_datetime,
CONVERT(VARCHAR(215), text.query('data(/EVENT_INSTANCE/EventType)')) as event_type,
CONVERT(VARCHAR(225), text.query('data(/EVENT_INSTANCE/ServerName)')) as server_name,
CONVERT(VARCHAR(225), text.query('data(/EVENT_INSTANCE/DatabaseName)')) as database_name,
CONVERT(VARCHAR(225), text.query('data(/EVENT_INSTANCE/ObjectType)')) as object_type,
CONVERT(VARCHAR(225), text.query('data(/EVENT_INSTANCE/ObjectName)')) as object_name,
CONVERT(VARCHAR(215), text.query('data(/EVENT_INSTANCE/UserName)')) as user_name,
Login_name,
CONVERT(VARCHAR(MAX), text.query('data(/EVENT_INSTANCE/TSQLCommand/CommandText)')) as command_text
FROM [SOME_DATABASE].[dbo].[ddl_objects_log]
where CONVERT(VARCHAR(225), text.query('data(/EVENT_INSTANCE/ObjectName)')) like '%SOME_STORED_PROCEDURE%'
order by date desc
GO
DBA lain mungkin memiliki pendapat yang berbeda, tetapi saya menganggap memiliki informasi ini tersedia sebagai penting untuk DBA.
FROM [SOME_DATABASE].[dbo].[ddl_objects_log]
... Haruskah saya membuat tabel?Jika Anda memiliki jejak default diaktifkan dan itu belum terguling, maka Anda dapat menggunakannya untuk menemukan siapa yang membuat SP
Klik di sini untuk memperbesar
Itu tergantung pada mengapa Anda ingin tahu apakah objek dibuat / diubah atau dijatuhkan. Anda dapat menggunakan notifikasi acara untuk mencatat dan memberi tahu Anda jika Anda merasa bahwa objek dibuat / dijatuhkan atau diubah oleh pengguna yang tidak sah. Pastikan Anda memiliki filter yang tepat di tempat.
Untuk kelengkapan jawaban ini, saya ingin menyebutkan - Informasi acara apa yang bisa saya dapatkan secara default dari SQL Server? dari Aaron Bertrand.
sumber
DATEADD(HH, -24, GETDATE())
jika ingin mendapatkan hasil lebih dari 24 jam.select * from sys.procedures where type = 'P' order by create_date desc
AND DatabaseID= 'the_Database_I_Want
, itu tidak menunjukkan apa-apa kepada saya, bahkan denganDATEADD(HH, -24, GETDATE())
berkomentar. Apakah saya melakukan sesuatu yang salah?Saya datang terlambat, tetapi saya "melakukan" keamanan dan administrasi.
Ya . Penting untuk memiliki atau membuat log ini sedapat mungkin. Namun, menurut saya, juga merupakan tanggung jawab Anda untuk tidak "membuka kotak ini" sampai menjadi penting. Dengan kata lain - sekali lagi, dalam pandangan saya - itu adalah tugas Anda untuk menyediakan repo untuk data, pastikan itu aman, pastikan itu disetel ... dan kemudian menjauh dari data di dalam kecuali Anda dipanggil untuk secara khusus lihat itu atau kecuali itu diperlukan untuk mencapai tujuan Anda.
Pendapat saya, dan pandangan saya, tetapi saya telah berurusan dengan data sensitif & rahasia selama bertahun-tahun dan telah membuat hampir tidak pernah [1] "membuka kotak," karena hal ini menurunkan kepercayaan pengguna.
Sekarang izinkan saya mengambil jalan yang berbeda : bagaimana jika tidak ada yang dapat dengan cepat mengetahui bagaimana prosedur menanggapi kasus-kasus tepi? Apa yang bisa membuat Anda atau saya satu jam untuk menyelesaikan mungkin memerlukan beberapa menit penulis: "ah, benar, hal ini gagal ketika ..."
sumber