Как я могу синхронизировать представления и хранимые процедуры между базами данных SQL Server? - PullRequest
3 голосов
/ 03 декабря 2008

У меня есть «эталонная» база данных SQL Server 2005, которая используется в качестве нашего глобального стандарта. Мы все настроены для правильной синхронизации общей схемы таблиц и данных, но пока не имеем хорошего решения для других объектов, таких как представления, хранимые процедуры и пользовательские функции.

Мне известны такие продукты, как Redgate's SQL Compare , но мы сейчас не хотим полагаться (дальше) на сторонние инструменты.

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

Редактировать для пояснения: когда я говорю «сценарий», я имею в виду запуск сценария, который выталкивает любые изменения на целевые серверы. Не выполняется один и тот же сценарий CREATE / ALTER несколько раз на нескольких серверах.

Любой совет / опыт о том, как подойти к этому, был бы очень признателен.

Ответы [ 4 ]

6 голосов
/ 03 декабря 2008

1) Сохраните все ваши представления, триггеры, функции, хранимые процедуры, схемы таблиц и т. Д. В Source Control и используйте их в качестве мастера.

2) В противном случае используйте вашу базовую базу данных в качестве основного и сценариев, а также в виде представлений и хранимых процедур и т. Д. Щелкните правой кнопкой мыши БД, Задачи-> Создать сценарии и выберите объекты.

3) Вы даже можете использовать транзакционную репликацию между эталонной и целевой БД.

Я твердо верю, что лучший способ - это все с сценариями и помещением в Source Control.

3 голосов
/ 19 января 2009

Взгляните на ScriptDB на Codeplex (http://www.codeplex.com/ScriptDB)

Это консольное приложение C #, которое создает сценарии объектов базы данных SQL с помощью SMO. Вы можете использовать это для сравнения скриптов, созданных на двух серверах. Так как он с открытым исходным кодом, настройте его, если вам это нужно.

Тимур

3 голосов
/ 19 января 2009

Вы можете использовать системные таблицы для этого.

Например,

select * from sys.syscomments

В столбце «текст» будет представлен весь код для процедур хранения (плюс другие данные).

Стоит посмотреть на все системные таблицы и процедуры. На самом деле, я подозреваю, что именно этим и занимаются программное обеспечение и другие инструменты RedGate.

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

Также см .:

Запрос списка хранимых процедур SQL Server вместе со строками кода для каждой процедуры

это немного другой вопрос, чем ваш, но связанный.

3 голосов
/ 03 декабря 2008

Я использую (и люблю) инструменты RedGate, но когда Microsoft анонсировала Visual Studio 2010, они решили позволить подписчикам MSDN, которые получают Visual Studio 2008 Team System, также получить Visual Studio 2008 Database Edition (в которой есть инструмент сравнения схем). .

Так что, если у вас или вашей организации есть подписка MSDN, вы можете рассмотреть возможность загрузки и установки Database Edition поверх вашей Team System, чтобы получить все функции сейчас.

Подробнее на http://msdn.microsoft.com/en-us/vsts2008/products/cc990295.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...