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

Мы обнаружили, что это, возможно, было проблемой Git. Мы разветвили мастер и развернули его без каких-либо изменений, и он без проблем запустился, поэтому мы предполагаем, что это на самом деле испорченное Git-репо нашей ветки master. Я думаю, @injecteer был прав, что в нем должна быть ссылка.

Я задам свой вопрос тегу git. Спасибо @injecteer

24
задан Bob OMalley 17 September 2008 в 16:29
поделиться

7 ответов

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

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

использования, который можно сделать, где пункт сами, но это перечислит его в порядке даты модификации, убывающей

60
ответ дан 28 November 2019 в 22:18
поделиться

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

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

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

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

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

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

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

11
ответ дан 28 November 2019 в 22:18
поделиться

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

SELECT name
FROM sys.objects
WHERE type = 'P'
    AND DATEDIFF(D,modify_date, GETDATE()) < X
10
ответ дан 28 November 2019 в 22:18
поделиться

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

2
ответ дан 28 November 2019 в 22:18
поделиться

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

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO
1
ответ дан 28 November 2019 в 22:18
поделиться

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

ИЗБРАННОЕ имя ОТ sys.objects ГДЕ тип = 'P' И DATEDIFF (D, modify_date, GETDATE ()) < 7

0
ответ дан 28 November 2019 в 22:18
поделиться

Существует несколько баз данных, сравнивают инструменты там. Тот, как который я всегда имею, является SQLCompare Красный Логический элемент .

можно также попытаться использовать:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

В SQL 2000, который всегда не работал бы, потому что использование ИЗМЕНЯЕТСЯ, не обновил дату правильно, но в 2005 я полагаю, что проблема решена.

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

0
ответ дан 28 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: