2013-07-10 33 views
8

我希望下面的比较不会显示差异。根据MSDN (请参阅第7步),应该有一个SQLCMD变量函数可用,我找不到。本文档适用于SQL 2010,但我使用的是2012版本。此页面上似乎没有2012版本的文档。SQLCMD变量和SSDT模式比较问题

如何指定$(DatabaseName)的值,以便进行比较?我已经有了我的数据库项目设置中指定的值。

SQL Schema Compare

+0

我不认为你可以在项目和实时数据库之间做到这一点。即使该页面似乎暗示:“只有在比较两个项目时才能指定SQLCMD变量”如果生成脚本来更新数据库,会发生什么情况? –

+0

另外,如果这是针对数据库本地的表,为什么要指定数据库名称?只需使用“dbo.ClaimProvider”,你应该全部设置。我知道跨数据库查询的情况是不同的,但是这似乎并没有跨越数据库。 –

+0

@PeterSchott我做了很多的跨数据库连接,所以它看起来更好,所有名称一致,而不是在3和2部分名称之间切换。 –

回答

3

您可以围绕此模式比较你的开发数据库,而不是项目,到现场数据库。请记住,您必须首先将项目部署到开发数据库。

仅供参考 - 变量未被替换的事实只是比较窗口中的一个问题。在比较过程中,变量不会导致错误的差异(换句话说,Schema Compare会在比较时替换变量),并且在更新目标数据库时替换变量。

+0

我试图捕获开发人员在dev中修改的内容数据库,然后更新该项目。如果我将该项目部署到开发中,是不是会消除它们的更改? –

+1

它可能是用于开发目的的任何服务器,甚至可能是本地数据库实例或专用于模式比较的共享服务器。 – Keith

+0

或者这里有一个想法...让MS修复他们的比较功能中的错误大声笑 – user5855178