--Коллеги из филиала спросили "как понять, какие процедуры изменились?"
--К счастью, на том же сервере присутствует база, которую можно считать "эталоном".
--Вместо Base1 и Base2 подставить требуемые базы данных, в том числе можно --сравнивать определения объектов на linked серверах.
--В этом случае не нужно применять сторонние утилиты - достаточно одного запроса: T---SQL:
SELECT o.name
FROM sys.objects o
LEFT join sys.columns col ON col.OBJECT_ID = o.OBJECT_ID
WHERE o.type = 'U'
and col.name like 'Date'
ORDER BY o.nameSELECT
isnull(s1.name+'.'+o1.[name], s2.name+'.'+o2.[name]) ,
CASE
WHEN o1.[OBJECT_ID] IS null THEN 'только во второй'
WHEN o2.[OBJECT_ID] IS null THEN 'только в первой'
ELSE 'объект изменен' END
FROM Base1.sys.sql_modules m1
INNER join Base1.sys.objects o1
ON o1.[OBJECT_ID] = m1.[OBJECT_ID]
LEFT join Base1.sys.schemas s1
ON s1.[schema_id] = o1.[schema_id]
FULL join Base2.sys.sql_modules m2
INNER join Base2.sys.objects o2
ON o2.[OBJECT_ID] = m2.[OBJECT_ID]
LEFT join Base2.sys.schemas s2
ON s2.[schema_id] = o2.[schema_id]
ON s1.name+'.'+o1.[name] = s2.name+'.'+o2.[name]
WHERE isnull(m1.definition, '') <> isnull(m2.definition, '+')
Комментариев нет:
Отправить комментарий