SQL Server - SQL Compare - Автоматическая идентификация и замена различных имен баз данных?
-
27-10-2019 - |
Вопрос
У меня есть две базы данных разработки на местном уровне
Alpha
Beta_Dev
У меня есть две производственные базы данных удаленно
Alpha
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
. Анкет Я полагаю, что это проверяется по умолчанию, но он есть, если вы хотите его изменить