12

安装自定义 CLR 对象后,Sql Server Developer Tools (SSDT) VS2012 将不允许更新。错误是“检测到源架构漂移。按比较刷新。刷新后会发生同样的事情。

尝试在设置中,我将对象设置为存储过程。设置->常规->阻止可能的数据丢失->尝试打开和关闭。

4

4 回答 4

8

这种循环也可能是由于引用的 SSDT 项目未能构建造成的。引用的项目可能丢失、卸载或有错误导致比较无法完成。

于 2015-01-14T07:34:04.657 回答
3

这不是答案,而是解决此问题的线索。

我打算将一个列从 varchar[200] 更新为 varchar[MAX] 并且也遇到了这个问题。所以我登录服务器并尝试通过安装在那里的 SQL Management Studio 手动更新数据库,我收到了这个错误:

"Saving changes is not permitted. The changes you have made require the folloing tables to be drpped and re-created. You have either made changes to a table that can't be re-created or enable the option Prevent saving changes that require the table to be re-created."

似乎重新创建表是如此危险,以至于“阻止/取消阻止可能的数据丢失”无法处理。所以我认为只有当我们能够绕过这个 LOCAL 警告时,我们才能远程更新数据库。

但是,为什么 [200] 到 [max] 会导致重新创建表?这没有任何意义。我尝试了 [200] 到 [1000],但效果不佳。这可能是这个问题的关键。

而且,如果您在 VS 的服务器资源管理器中执行相同的更新,而不是 SQL Management Studio,它就可以工作。再说一遍,为什么?

于 2013-11-26T09:12:48.210 回答
3

当数据库用户“更改”时,可能会发生这种情况。

以下相当可怕的论坛页面讲述了外国黑客试图暴力访问“sa”数据库用户的问题,每次尝试都会更改 sa 用户的日期时间戳(这被视为模式漂移):

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/5c22a7b4-7a82-4717-a118-2475bc62705b/schema-compareupdate-error-target-schema-drift-detected?forum=ssdt

这里还提到你可以查询 sa-user 几次,看看你是否发生了这种情况:

SELECT * FROM sys.server_principals WHERE principal_id=1

我目前遇到了同样的问题(正在修改 sa 用户;我对黑客一无所知)并且尚未找到解决方案。

编辑properties- 我通过>打开登录 Windows 防火墙logging,我们在端口 3071 上设置了一个阻止规则,该端口有很多无法解释的流量。然后问题就消失了。

于 2018-02-26T14:06:14.907 回答
0

我尝试以管理员身份运行 VS,它成功了。

于 2017-05-01T11:01:52.617 回答