【问题标题】:SSDT Schema Compare keeps finding differences for users?SSDT Schema Compare 不断为用户寻找差异?
【发布时间】:2016-03-08 13:58:56
【问题描述】:

标题说明了一切,但更多细节。当我将 VS2015 中的模式比较工具用于我的 SSDT 项目和服务器上的数据库时。比较结果总是与用户不同。我检查了它所说的差异,但环境之间没有任何区别。

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

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

编辑:

【问题讨论】:

  • 有机会发一张比较的截图吗?会不会有诸如空格差异之类的微不足道的差异?
  • 添加了其中一位用户的屏幕截图,表示存在差异。
  • 我有问题。当您深入研究时,在属性文件夹下,DB 端显示UserType=2,而项目端显示UserType=0。我在项目中找不到用户类型来更改它。它不在用户脚本中

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


【解决方案1】:

请点击找到的用户差异左侧的箭头。您将看到一个属性文件夹和丢失的登录名,这是真正的区别。如果您去 Schema Compare Options -> Object Types (tab) -> Non-Application-scoped -> Logins 将 Login 对象类型添加到您的比较中,那么您的问题将得到解决。

Logins objects

【讨论】:

  • 这对我有用。大概应该标记为答案。
【解决方案2】:

虽然我认为这是一种解决方法(我还没有找到真正的解决方案来消除比较中的用户,即使他们是相同的),但这是我找到的最好的。只需将用户排除在比较之外。

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

【讨论】:

    【解决方案3】:

    当我在 Change > User > Properties > Spanner 图标下钻取模式比较时,我可以看到这种差异:

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

    这是什么意思?我用谷歌搜索无济于事。

    更新并不能解决它。从项目中删除用户脚本并且更新也不会。

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

    【讨论】:

    • 你有没有弄清楚“UserType”是什么?我也遇到了同样的问题。。。有谁知道吗?
    【解决方案4】:

    至少在 Visual Studio 2017 中(看起来选项也在 2015 中),尝试转到架构比较选项并在“常规”选项卡下,取消选中“忽略登录 SID”选项。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 2015-12-12
      相关资源
      最近更新 更多