我一直在碰到这个错误,这个错误通常是由我在Lightswitch
中构建应用程序时犯的一些错误引起的。它通常与人际关系有关。在发布应用程序并查看错误之前,我通常会继续前进并完成许多工作。到这个时候很难说服我做错了什么。有没有办法我追溯这个错误,看看我需要在表格中做些什么改变?
Net SqlClient数据提供程序:消息50000,级别16,状态127,行6 检测到行。架构更新正在终止,因为数据丢失 可能会发生。
谢谢。
答案 0 :(得分:16)
如果您对实体的属性(在表设计器中)所做的更改将导致已发布数据库中的实体表被删除,则会发生此错误。重新创建,表中包含数据。这就是SQL Server的工作方式,它不受LightSwitch的控制。但是,LightSwitch在谨慎方面犯了错误,&不允许可能导致任何数据潜在丢失的操作。
可能触发此事件的类型包括:
但是,您可以在属性列表的末尾添加一个属性,而不会触发删除的表格。重新创建。
在尝试发布应用程序之前做出太多更改真的不是一个好主意,正是因为你建议的原因 - 最终不知道你做了什么。您特别想在对实体的属性进行任何更改后发布。即使您只是在开发计算机上发布到本地SQL Server实例(包括SQL Express),也要在发布到生产服务器之前“测试”您的更改。
我解决这个问题的方式(当我以前习惯使用LS的内在数据时,ApplicationData - 我现在使用附加的数据源)是手动对数据库本身的列进行更改,使用像SSMS(SQL Server Management Studio)。然后,您可以决定允许(潜在)数据丢失。虽然 你改变了什么,但要非常小心,&确保它只是与您在LightSwitch中对该属性所做的更改的相同。当然,在对数据库进行任何更改之前备份数据库。如果您导致数据库与LightSwitch不同步,您将遇到重大问题。
答案 1 :(得分:7)
该问题的一个项目是错误消息。例如,在上面的错误消息[消息50000,级别16,状态127,行6]中,第6行引用.publish.sql文件中的行号,该文件是构建的一部分。该文件可以在项目的/ bin / Debug子目录中找到。由于它是一个文本文件,您可以使用任何文本编辑器或VS2012打开该文件以查看该文件并查找带有错误的行号。
在我的特定问题中,我正在删除一个我不再需要的列。在生成的.publish.sql文件中,我能够找到检查我正在更改的表中的行的IF EXISTS行。因为我知道这个改变并没有破坏我关心的数据,所以我只是在VS2012中注释了IF EXISTS行,然后再次执行了脚本。这一变化按计划进行。
请注意:此建议最重要的是保护您的数据。只有在您感觉舒适的情况下才能进行此更改。的 * 强>
答案 2 :(得分:1)
当项目发布失败并出现如下错误时 '架构更新正在终止,因为可能会发生数据丢失'
右键单击项目 -> 发布 点击高级, 在常规选项卡 -> 选中“如果可能发生数据丢失则阻止增量部署”, 在放置选项卡中 -> 将对象放置在目标中而不是源中 然后点击确定发布
注意:有时当上述方法不起作用时,请尝试:“取消选中”阻止增量部署并发布