【发布时间】: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