Сравнить определение процедуры в двух базах данных

#sql #sql-server #sql-server-2012 #compare

#sql #sql-сервер #sql-server-2012 #Сравнить

Вопрос:

У нас есть экземпляр Sql Server 2012, в котором у нас есть 2 базы данных, называемые A и B (предположим, что A — производственная база данных, а B — база данных разработки, а B — точная копия базы данных A)

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

Чтобы найти процедуры, которые отличаются по определению, я придумал следующий сценарий, но проблема в том, что я не уверен на 100%, что этот сценарий работает каждый раз. Поэтому, пожалуйста, предложите свои идеи по этому поводу.

Сценарий

Временная таблица 1 ( A_PROCEDURE) — для хранения всех имен и определений процедур, существующих в базе данных A (выполняется из базы данных A)

 select * into A_PROCEDURE FROM (
Select routine_name,routine_definition from INFORMATION_SCHEMA.ROUTINES ) DTL;
  

Теперь из базы данных B я выполнил следующий запрос, чтобы найти все процедуры, которые не совпадают по определению процедуры

 SELECT T.ROUTINE_NAME B_PROC,
L.ROUTINE_NAME A_PROC,T.ROUTINE_DEFINITION B_PROC_DEF,L.ROUTINE_DEFINITION A_PROC_DEF
FROM INFORMATION_SCHEMA.ROUTINES T JOIN A.DBO.A_PROCEDURE L ON T.ROUTINE_NAME = L.ROUTINE_NAME
AND T.ROUTINE_DEFINITION <> L.ROUTINE_DEFINITION;
  

Из приведенного выше запроса я нашел процедуры, которые совпадают по имени, но не совпадают по определению (которые являются правильными — проверяются вручную построчно).

Так это правильный способ? Следует рассмотреть что-нибудь еще? Пожалуйста, поделитесь своими идеями по этому поводу

Спасибо и с наилучшими пожеланиями, Вишнудас

Ответ №1:

Привет, Вишнудас: вам нужна sp_HelpText системная хранимая процедура. Эта утилита сохраняет определение каждой хранимой процедуры в ядре базы данных SQL Server.

Каждому администратору базы данных или разработчику стоит использовать инструмент сравнения. В то же время, вы можете проверить этот блог, где вы могли бы написать скрипт без статистики о встроенном сравнении двух хранимых процедур. Там вы получите объяснение об использовании sp_HelpText .

Использование sp_HelpText

Тем не менее, я предлагаю использовать инструмент сравнения, такой как SQL Compare tool, используемый производственными командами в некоторых средних и крупных компаниях. Рекомендуется использовать полезный верхний список, и он был просмотрен другими коллегами.

Комментарии:

1. @leshua: Спасибо за ваше ценное предложение. Попробует все предложения, которые вы рекомендовали,