1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| WITH
T0 AS
(
SELECT DDL_ID, DDL_DH, DDL_APPLICATION, DDL_HOST, DDL_CONNEXION, DDL_USER,
Txml.DataXml.value('(./EventType[1])', 'sysname') AS EVENT_TYPE,
Txml.DataXml.value('(./DatabaseName[1])', 'sysname') AS DATABASE_NAME,
Txml.DataXml.value('(./SchemaName[1])', 'sysname') AS SCHEMA_NAME,
Txml.DataXml.value('(./ObjectName[1])', 'sysname') AS OBJECT_NAME,
Txml.DataXml.value('(./ObjectType[1])', 'sysname') AS OBJECT_TYPE,
Txml.DataXml.value('(./PostTime[1])', 'DATETIME2') AS CREATE_DATETIME,
Txml.DataXml.value('(./TSQLCommand[1]/CommandText[1])', 'NVARCHAR(max)') AS SQL_COMMANDE
FROM msdb.S_DDL.T_SUIVI_DDL AS E
CROSS APPLY E.DDL_DATA.nodes('/EVENT_INSTANCE') AS Txml (DataXml)
),
T1 AS
(
SELECT DATABASE_NAME, SCHEMA_NAME, OBJECT_NAME, OBJECT_TYPE,
CASE
WHEN EVENT_TYPE LIKE 'CREATE?_%' ESCAPE '?' THEN 1
WHEN EVENT_TYPE LIKE 'ALTER?_%' ESCAPE '?' THEN 2
WHEN EVENT_TYPE LIKE 'DROP?_%' ESCAPE '?' THEN 3
ELSE NULL
END AS ORDER_CODE, CREATE_DATETIME, SQL_COMMANDE,
DDL_ID, DDL_DH, DDL_APPLICATION, DDL_HOST, DDL_CONNEXION, DDL_USER
FROM T0)
SELECT DATABASE_NAME, OBJECT_TYPE, SCHEMA_NAME, OBJECT_NAME, CREATE_DATETIME,
DENSE_RANK() OVER(ORDER BY DATABASE_NAME, OBJECT_TYPE, SCHEMA_NAME, OBJECT_NAME, ORDER_CODE, CREATE_DATETIME)
AS OBJECT_VERSION,
SQL_COMMANDE, DDL_ID, DDL_DH, DDL_APPLICATION, DDL_HOST, DDL_CONNEXION, DDL_USER
FROM T1; |
Partager