【问题标题】:RedGate SQL Source Control and Synonyms in SQL Server 2008SQL Server 2008 中的 RedGate SQL 源代码控制和同义词
【发布时间】:2015-10-22 08:29:35
【问题描述】:

我们在 SQL Server 2008 R2 上使用 RedGate SQL 源代码控制取得了不同程度的成功。我们长期遇到过滤器问题,我们还有另一个问题,我希望其他人也遇到过并且可以提出解决方案。

我们的 dev->test->prod 部署堆栈包括链接服务器的同义词的使用 - 基本上是开发机器上的单个同义词,其名称与测试数据库上的同义词相同,在我们的生产环境中也被命名为相同。所以在开发中,它可能看起来像这样:

CREATE SYNONYM [dbo].[mySynonym] FOR [LocalDevDb].[Database].[Schema].[object]

在测试/质量保证中:

CREATE SYNONYM [dbo].[mySynonym] FOR [TestServerDb].[Database].[Schema].[object]

最后是生产:

CREATE SYNONYM [dbo].[mySynonym] FOR [ProductionDb].[Database].[Schema].[object]

为了避免同义词产生冲突(因为可以看到,服务器名称不同,但全名的其余部分相同),我们尝试在提交时将这些从 SQL 源代码控制中排除,使用过滤器。

但是,这样做也会导致任何使用同义词的对象也被忽略。我们现在正在通过根本不检查同义词来解决它,但显然这是不可持续的。

这是设计使然吗?有没有其他人看到过这种过滤器行为?

编辑 - 这种工作流程和以这种方式使用同义词是由 RG 支持建议的,作为一种克服部署和同步问题的方法,这些问题在具有完整链接服务器名称的环境与不同环境(或某些环境中的对象)之间存在差异根本不需要的情况,因为在生产中位于不同服务器上的数据库可能在开发或测试中位于同一主机上)

【问题讨论】:

    标签: sql-server-2008 version-control synonym redgate


    【解决方案1】:

    另一种选择是将同义词与依赖项一起部署。

    默认情况下,SQL 源代码控制使用“忽略同义词中的服务器和数据库名称”选项。这允许您提交同义词(及其依赖项),然后当其他开发人员选择同义词并针对他们的环境进行编辑时,源代码控制将忽略数据库名称/服务器更改。

    更多信息在这里http://documentation.red-gate.com/display/SC11/Setting+project+options

    【讨论】:

      【解决方案2】:

      事实证明,默认情况下,过滤同义词对象时会忽略同义词依赖项。所以解决方法是编辑 C:\Users\%UserName%\AppData\Local\Red Gate\SQL Source Control 3\ 处的 OptionStore.xml 文件,并将 IgnoreSynonymDependencies 元素从 false 修改为 true。请记住,对于要显示同义词依赖关系的每个数据库,都必须这样做。

      【讨论】:

        猜你喜欢
        • 2017-06-02
        • 2017-07-12
        • 2012-10-03
        • 1970-01-01
        • 2013-05-02
        • 2017-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多