【问题标题】:SQL Server - SQL Compare - Automatic identification and replacement of differing database names?SQL Server - SQL 比较 - 自动识别和替换不同的数据库名称?
【发布时间】:2023-03-31 01:31:01
【问题描述】:

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

  1. Alpha
  2. Beta_Dev

我有两个远程生产数据库

  1. Alpha
  2. Beta

我使用SQL Compare 来同步两个 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 Compare 也不会被欺骗认为 SP 不同。

【问题讨论】:

    标签: sql sql-server sqlcompare


    【解决方案1】:

    我不认为你可以按照你想要的方式做,但如果它适合你想做的事情,这是一个潜在的解决方法

    Beta 数据库中引用的对象创建Synonyms

    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-08-10
      • 2018-11-16
      • 2015-12-22
      • 2011-05-30
      • 1970-01-01
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多