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

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

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

Заранее спасибо,

Боб

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
27
0
77 010
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

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

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

USE AdventureWorks2008;

GO

SELECT SprocName=name, create_date, modify_date

FROM sys.objects

WHERE type = 'P' 

AND name = 'uspUpdateEmployeeHireInfo'

GO

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

Вы также можете попробовать использовать:

SELECT name
FROM sys.objects
WHERE modify_date > @cutoffdate

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

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

Ответ принят как подходящий

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

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

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

Добавьте к этому топ-100, чтобы сделать его еще лучше.

Michael Brown 17.09.2008 20:48

Почему sysobjects больше не рекомендуется?

feetwet 25.08.2016 19:02

@SQLMenate есть представление SQL SERVER IDE View, чтобы перечислить то же самое, вместо того, чтобы вводить запрос, я хочу использовать окно для просмотра того же. Можешь сказать где это находится?

Pranesh Janarthanan 09.01.2020 08:45

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

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

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

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

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

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

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

Другие вопросы по теме