SQL Server - SQL Compare - Автоматическая идентификация и замена разных имен баз данных? - PullRequest
1 голос
/ 14 июня 2011

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

  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.

1 Ответ

1 голос
/ 14 июня 2011

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

Создать 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.Я считаю, что это проверено по умолчанию, но оно есть, если вы хотите изменить его

...