129 lines
4.8 KiB
Transact-SQL
129 lines
4.8 KiB
Transact-SQL
USE [HCITools]
|
|
GO
|
|
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[mon_DDL_Audit_Alerts]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[mon_DDL_Audit_Alerts]
|
|
GO
|
|
|
|
|
|
USE [HCITools]
|
|
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[mon_DDL_Audit_Alerts]
|
|
@in_debug tinyint = 0
|
|
AS
|
|
/*=============================================================================
|
|
|
|
Explication du traitement realise par la SP
|
|
-------------------------------------------
|
|
La SP va rechercher les modifications de DDL dans [master].[dba].[DDL_audit]
|
|
|
|
Contexte d'utilisation
|
|
----------------------
|
|
Appelé depuis le job D92120 - DDL Audit Alerts
|
|
|
|
Parametres
|
|
----------
|
|
@in_debug : non utilisé
|
|
|
|
Creation : 13.04.21 / RTC
|
|
|
|
Modifications : 11.08.2021 / spe : #TFS65583# Migrate personal email address from [hcisolutions.ch] to [galenica.com]
|
|
|
|
=============================================================================*/
|
|
SET QUOTED_IDENTIFIER ON
|
|
|
|
DECLARE @subject NVARCHAR(MAX),
|
|
@html_msg NVARCHAR(MAX),
|
|
@html_table NVARCHAR(MAX)
|
|
|
|
/* Run only on centrals Validation and Dev */
|
|
IF NOT EXISTS (SELECT 1 FROM [master].[cfg].[InstanceContext] WHERE [Business] = 'TPCENT' AND [TYPE] in ('DEVE','VALI'))
|
|
RETURN
|
|
|
|
BEGIN TRY
|
|
/* Formatage du message et envoi */
|
|
SELECT @subject = @@SERVERNAME + ' - DDL Audit'
|
|
SET @html_table = N''
|
|
|
|
SELECT @html_table = @html_table + '<tr style="color:black;background-color:white;">' +
|
|
'<td>' + DA_Host_Name + '</td>' +
|
|
'<td>' + ISNULL(SPID,'') + '</td>' +
|
|
'<td>' + ISNULL(DatabaseName,'') + '</td>' +
|
|
'<td>' + ISNULL(SchemaName,'') + '</td>' +
|
|
'<td>' + ISNULL(ObjectName,'') + '</td>' +
|
|
'<td>' + ISNULL(EventType,'') + '</td>' +
|
|
'<td>' + DA_App_Name + '</td>' +
|
|
'<td>' + CONVERT(NVARCHAR(25),PostTime) + '</td>' +
|
|
'</tr>'
|
|
FROM (SELECT DA_Host_Name,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/SPID)[1]','NVARCHAR(MAX)') AS SPID,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/PostTime)[1]','NVARCHAR(MAX)') AS PostTime,
|
|
DA_App_Name,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/EventType)[1]','NVARCHAR(MAX)') AS EventType,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/DatabaseName)[1]','NVARCHAR(MAX)') AS DatabaseName,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/SchemaName)[1]','NVARCHAR(MAX)') AS SchemaName,
|
|
DA_Event_Xml.value('(./EVENT_INSTANCE/ObjectName)[1]','NVARCHAR(MAX)') AS ObjectName
|
|
FROM [master].[dba].[DDL_audit]
|
|
WHERE ISNULL(DA_App_Name,'') NOT IN ('SQLCMD','.Net SqlClient Data Provider',
|
|
'ActivePharmacy.ArizonaServerService',
|
|
'ActivePharmacy.ActivePosClientService',
|
|
'ActivePharmacyStock',
|
|
'Microsoft® Windows® Operating System',
|
|
'SQLAgent - Initial Boot Probe',
|
|
'SQLAgent - Enabling/disabling Agent XPs',
|
|
'Microsoft SQL Server',
|
|
'APS® TriaOne-Cash'
|
|
)
|
|
AND DA_App_Name not like 'SQLAgent - TSQL%'
|
|
AND ISNULL(DA_Event_Xml.value('(./EVENT_INSTANCE/DatabaseName)[1]','NVARCHAR(MAX)'),'') NOT IN ('tempdb','ArizonaCUST','master','PharmIndexTP')
|
|
AND DA_Event_Xml.value('(./EVENT_INSTANCE/PostTime)[1]','NVARCHAR(MAX)') > GETDATE()-1
|
|
) AS myEventsTable
|
|
GROUP BY DA_Host_Name,
|
|
SPID,
|
|
DA_App_Name,
|
|
EventType,
|
|
DatabaseName,
|
|
SchemaName,
|
|
ObjectName,
|
|
PostTime
|
|
ORDER BY DA_Host_Name,
|
|
DatabaseName,
|
|
SchemaName,
|
|
ObjectName,
|
|
PostTime ASC
|
|
|
|
IF @@ROWCOUNT > 0
|
|
BEGIN
|
|
|
|
SET @html_msg =
|
|
N'<H3><font color="Black">DDL Audit by SQL operators</H3>' +
|
|
N'<table border="1" align="left" cellpadding="2" cellspacing="0" style="color:white;font-family:arial,helvetica,sans-serif;text-align:center;" >' +
|
|
N'<tr style ="font-size: 14px;font-weight: normal;background:black;">
|
|
<th>Host Name</th>
|
|
<th>SPID</th>
|
|
<th>Database Name</th>
|
|
<th>Schema Name</th>
|
|
<th>Object Name</th>
|
|
<th>Event Type</th>
|
|
<th>Application Name</th>
|
|
<th>Post Time</th>
|
|
</tr>' + @html_table + N'</table>'
|
|
|
|
EXEC msdb.dbo.sp_send_dbmail @recipients= 'laurent.perroud@galenica.com;raphael.mognetti@galenica.com',
|
|
@subject = @subject,
|
|
@body = @html_msg,
|
|
@body_format = 'HTML' ;
|
|
|
|
END
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
/* Traitement des erreurs (avec RaiseError) */
|
|
EXEC dbo.get_Error_Info @in_RaiseError = 1
|
|
|
|
END CATCH |