SQL Server - Сравнение SQL - Автоматическая идентификация и замена разных имен баз данных?

У меня есть две базы данных для разработки локально

  1. Alpha
  2. Beta_Dev

У меня есть две рабочие базы данных удаленно

  1. Alpha
  2. Beta

Я использую SQL Compare для синхронизации схемы двух баз данных Alpha.

Иногда хранимые процедуры в версии для разработки базы данных Alpha ссылаются на таблицы в базе данных Beta или в локальной среде Beta_Dev.

Например:

Select * from Beta_Dev.dbo.MyTable

Этот код не будет работать на рабочем сервере, потому что бета-база данных называется Beta, а не Beta_Dev.

Есть ли способ с помощью SQL Compare сравнить все SP или Views таким образом, чтобы Beta_Dev (local) = Beta (remote)?

Мало того, что базы данных будут загружены в рабочем состоянии, SQL Compare не будет обманут, думая, что SP разные, когда отличаются только Beta_Dev / Beta.


person Brian Webster    schedule 14.06.2011    source источник


Ответы (1)


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

Создайте Synonyms для объектов, которые являются ссылками в Beta базах данных

USE [Alpha]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta].[dbo].[MyTable]

а также

USE [Alpha_dev]
CREATE SYNONYM [dbo].[BetaMyTable] FOR [Beta_dev].[dbo].[MyTable]

поэтому ваши процессы теперь могут использовать:

SELECT * FROM BetaMyTable

в SQL Compare в Edit Project... -> Options есть параметр правила игнорирования, который называется Database and server name in synonyms. Я считаю, что он отмечен по умолчанию, но он есть, если вы хотите его изменить.

person Beno    schedule 14.06.2011