SSDT Schema Compare会不断为用户找到差异?

时间:2015-12-03 19:40:08

标签: sql sql-server visual-studio-2015 sql-server-data-tools

标题说明了所有内容,但有关详细信息。当我在VS2015中使用架构比较工具用于我的SSDT项目和我在服务器上的数据库时。比较结果总是与用户不同。我检查它所说的差异,但环境之间没有任何区别。

我甚至从比较结果中更新了我的项目,试图纠正这些“差异”。然后我又进行了另一次比较,同样的用户又回来了差异......什么!哈哈。

任何人都知道会导致此同步问题的原因或我做错了什么?用户手动添加到服务器上的数据库,而不是通过SSDT部署,所以这可能是一个原因?

编辑:

enter image description here

4 个答案:

答案 0 :(得分:3)

请点击找到的用户差异左侧的箭头。您将看到属性文件夹和缺少的登录信息,这是真正的区别。如果你去Schema Compare Options - >对象类型(标签) - >非应用范围 - >登录以将Login对象类型添加到您的比较中,然后您的问题将得到解决。

Logins objects

答案 1 :(得分:1)

虽然我认为这是一个解决方法(我还没有找到一个真正的解决方案来消除用户的比较,即使它们是不同的),这是我发现的最好的。只需从比较中排除用户。

enter image description here

您可以通过单击“架构比较”窗口上的齿轮图标并展开“应用程序范围”对象并取消选中“用户”(或者您要排除其他任何其他内容)来访问此菜单。

答案 2 :(得分:0)

至少在Visual Studio 2017中(看起来选项也在2015年),尝试使用Schema Compare选项,在“常规”选项卡下,取消选中“忽略登录SID”选项。

我和用户有同样的问题(没有为用户定义登录),并且取消选中此选项可以解决我的问题。我仍然选择了实际正确的用户更改,但对于未更改的现有用户,比较不再显示虚假项目。

答案 3 :(得分:0)

当我深入研究模式时,在“更改”>“用户”>“属性”>“扳手”图标下进行比较,我可以看到这种差异:

Source (SQL Azure)    Target (Project)
=============         ===================
UserType=2            UserType=0

这是什么意思?我没有用谷歌搜索。

更新无法解决。从项目中删除用户脚本和更新都不会。

我在源代码中找不到UserType,因此必须由比较在内部生成。

enter image description here