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

StackOverflow https://stackoverflow.com/questions/6337900

  •  27-10-2019
  •  | 
  •  

Вопрос

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

  1. Alpha
  2. Beta_Dev

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

  1. Alpha
  2. Beta

я использую SQL сравните синхронизировать схему двух альфа -баз данных.

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

Например:

Select * from Beta_Dev.dbo.MyTable

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

Существует ли способ, используя SQL Compare, чтобы сравнить все SP или взгляды, так что, чтобы Beta_Dev (local) = Beta (remote)?

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

Это было полезно?

Решение

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

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

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

а также

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

Так что ваши Procs теперь могут использовать:

SELECT * FROM BetaMyTable

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top