HY,
我正在尝试使用Visual Studio 2012数据库项目将数据库升级到更新版本,但我遇到了一个奇怪的问题。我选择源数据库然后选择目标数据库并点击compare.Visual Studio生成脚本差异,当我执行它失败,因为它试图删除表而不先删除这些表上的FK约束。(通常它应首先编写表中的所有约束,删除它们,删除表,之后创建新表,最后重新创建约束)
您是否有任何想法为什么它尝试直接删除表而不先删除约束。 我错过了一些设置吗?
答案 0 :(得分:1)
如果数据库中正在删除的表不在您的模式定义中,并且您在部署选项中选择了“目标但不在项目中的DROP对象”选项,那么它将尝试删除它们。 / p>
您是否检查过不是这种情况?
答案 1 :(得分:1)
对我来说听起来像个错误。尝试在SSDT forum上发布相同的问题。
如果您可以访问SQL Compare的副本,则可能值得尝试相同的比较,看看这是否更有效。如果您使用数据库项目作为数据源,则需要选择“源代码管理”,然后选择“脚本文件夹”,然后浏览到包含.sqlproj文件的文件夹。在Red Gate,我们正在努力改进SQL Compare中的数据库项目支持,所以我们欢迎任何反馈或问题。
答案 2 :(得分:1)
每当我使用数据库生成代码从数据模型或scrips,我经常遇到这个问题,所以我有一个脚本只是为了删除这些键,有时我必须手动删除我的数据库而不是执行查询,因为大多数它完成但不完全的时间,所以我首先dro数据库,生成脚本并运行脚本只是为了删除键