1

我在本地有两个开发数据库

  1. Alpha
  2. Beta_Dev

我有两个远程生产数据库

  1. Alpha
  2. Beta

我使用SQL 比较来同步两个 Alpha 数据库的模式。

有时,开发版数据库中的存储过程Alpha引用数据库中的表Beta,或者在本地环境中,Beta_Dev.

例如:

Select * from Beta_Dev.dbo.MyTable

此代码在生产服务器上不起作用,因为调用的是 Beta 数据库Beta,而不是Beta_Dev.

有没有办法使用 SQL 比较来比较所有 SP 或视图,这样Beta_Dev (local) = Beta (remote)

不仅数据库会按工作顺序上传,而且当只有 Beta_Dev / Beta 不同时,SQL 比较不会被欺骗认为 SP 不同。

4

1 回答 1

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]

所以你的 procs 现在可以使用:

SELECT * FROM BetaMyTable

在 SQL 比较中,在Edit Project... -> Options被调用中有一个忽略规则选项Database and server name in synonyms。我相信它是默认选中的,但如果你想改变它,它就在那里

于 2011-06-14T01:05:51.910 回答