Подтвердить что ты не робот

Как быстро определить наиболее недавно измененные хранимые процедуры в SQL Server

Мне нужно вручную перенести измененные хранимые процедуры из экземпляра базы данных DEV SQL Server 2005 в экземпляр TEST. За исключением изменений, которые я переношу, базы данных имеют одинаковые схемы. Как я могу быстро определить, какие хранимые процедуры были изменены в базе данных DEV для миграции на экземпляр TEST?

Я предполагаю, что могу написать запрос к некоторым системным таблицам для просмотра объектов базы данных хранимой процедуры типа, сортировки по каким-то последним измененным или скомпилированным данным, но я не уверен. Может быть, есть какая-то бесплатная полезность, на которую кто-то может указать мне.

Спасибо заранее,

Боб

4b9b3361

Ответ 1

вместо использования sysobjects, который больше не рекомендуется использовать sys.procedures

select name,create_date,modify_date
from sys.procedures
order by modify_date desc

вы можете сделать предложение where самостоятельно, но это отобразит его в порядке уменьшения даты по убыванию

Ответ 2

Боб Омалей, вероятно, давно решил свою проблему, но, надеюсь, новые читатели найдут это полезным.

Существуют некоторые особые случаи, когда сценарии могут не давать оптимальных результатов.

Один из них - удаление хранимых процедур или других объектов в среде dev - вы не поймете это с помощью системных представлений, потому что объект больше не существует.

Кроме того, Im действительно не уверен, что этот подход может работать с такими изменениями, как разрешения и т.д.

В таких случаях лучше всего использовать какой-либо сторонний инструмент, чтобы просто дважды проверить, что ничего не пропустили.

Ive успешно использовал ApexSQL Diff в прошлом для подобных задач, и он отлично работал на больших базах данных с 1000 + объектами, но вы не можете ошибаться с SQL Compare, которые уже упоминались здесь, или в основном любой другой инструмент, который существует на рынке.

Отказ от ответственности: я не связан ни с одним из поставщиков. Я упоминаю здесь, но я использую оба набора инструментов (Apex и RG) в компании, в которой я работаю.

Ответ 3

Вы можете выполнить этот запрос, чтобы найти все хранимые процедуры, измененные за последние x дней:

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X

Ответ 4

Хотя я не свободен, у меня был хороший опыт использования Red-Gates SQL Compare tool. Это работало для меня в прошлом. У них есть бесплатная пробная версия, которая может быть достаточно хорошей, чтобы решить вашу текущую проблему.

Ответ 5

вы также можете использовать следующий код snipet

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

Ответ 6

Вы можете использовать следующий тип запроса, чтобы найти измененные хранимые процедуры, вы можете использовать любое число, а затем 7 в соответствии с вашими потребностями

SELECT name
    FROM sys.objects
    WHERE type = 'P'
        AND DATEDIFF(D,modify_date, GETDATE()) < 7

Ответ 7

Есть несколько инструментов сравнения баз данных. Мне всегда нравится SQLCompare от Red Gate.

Вы также можете попробовать:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

В SQL 2000, который не всегда работал, потому что использование ALTER не обновляло дату правильно, но в 2005 году я считаю, что проблема исправлена.

Я использую инструмент сравнения SQL самостоятельно, поэтому я не могу ручаться за этот метод 100%