架构更新正在终止,因为可能会发生数据丢失

Mar*_*ark 27 sql-server visual-studio-lightswitch

我一直在碰到这个错误,这个错误通常是由我在构建应用程序时犯的一些错误引起的Lightswitch.它通常与人际关系有关.在发布应用程序并查看错误之前,我通常会继续前进并完成许多工作.到这个时候很难说服我做错了什么.有没有办法我追溯这个错误,看看我需要在表中更改什么?

Net SqlClient数据提供程序:Msg 50000,级别16,状态127,行6检测到行.架构更新正在终止,因为可能会发生数据丢失.

谢谢.

Yan*_*ran 16

当您对实体的属性(在表设计器中)所做的更改将导致已删除并重新创建已发布数据库中的实体表,并且该表中包含数据时,会发生此错误.这就是SQL Server的工作方式,它不受LightSwitch的控制.但是,LightSwitch会谨慎行事,并且不允许可能导致任何数据丢失的操作.

可能触发这种情况的事物类型有:

  • 重命名属性
  • 将其从需要更改为不需要
  • 更改属性的数据类型
  • &甚至(如果我没有记错)改变位置的属性列表中的属性

但是,您可以在属性列表的末尾添加属性,而不会触发删除和重新创建的表.

在尝试发布应用程序之前做出太多更改真的不是一个好主意,这正是您建议的原因 - 最终不知道您做了什么.您特别想在对实体的属性进行任何更改后发布.即使您只是在开发计算机上发布到本地SQL Server实例(包括SQL Express),也要在发布到生产服务器之前"测试"您的更改.

我已经解决了这个问题(当我以前习惯使用LS的内部数据时,ApplicationData - 我现在使用附加数据源)是使用类似SSMS(SQL)的手动对数据库本身的列进行更改服务器管理工​​作室).然后,您可以决定允许(潜在)数据丢失.尽管你改变了什么,但要非常小心,并确保它 LightSwitch中对该属性所做的更改相同.当然,在对数据库进行任何更改之前备份数据库.如果导致数据库与LightSwitch不同步,则会出现重大问题.


cod*_*emp 16

当项目发布失败并出现“架构更新正在终止,因为可能会发生数据丢失”之类的错误时

右键单击项目 - >发布 - >单击高级,在常规选项卡中 - >选中“如果可能发生数据丢失,则阻止增量部署”,在删除选项卡中 - >删除目标中而不是源中的对象 然后单击确定发布

注意:有时,当上述方法不起作用时,请尝试:“取消选中”阻止增量部署并发布


小智 7

一个项目是问题的线索,在错误消息中.例如,在上面的错误消息[消息50000,级别16,状态127,行6]中,第6行引用.publish.sql文件中的行号,该文件是构建的一部分.该文件可以在项目的/ bin/Debug子目录中找到.由于它是一个文本文件,您可以使用任何文本编辑器或VS2012打开该文件以查看该文件并查找带有错误的行号.

在我的特殊问题中,我正在删除一个我不再需要的列.在生成的.publish.sql文件中,我能够找到检查我正在更改的表中的行的IF EXISTS行.因为我知道这个改变并没有破坏我关心的数据,所以我只是在VS2012中注释了IF EXISTS行,然后再次执行了脚本.这一变化按计划进行.

请注意:此建议覆盖了保护您的数据的安全防护装置.只有在您感觉舒适的情况下才能进行此更改. *