sql - 包含但不删除SQL Schema比较

标签 sql visual-studio schema-compare

我正在尝试在Visual Studio 2013/15中使用SQL架构比较,并且遇到了一个问题,即从删除中删除表会完全删除它们。

问题在于它要删除的表是客户制作的表,因此当我们将版本与他们的数据库同步时,它会要求删除它们。我们不想删除它们,但是其中一些表对我们的表有约束,因此当它尝试CCDR时,由于表约束而失败。有没有一种方法可以添加要被创建的表(重新创建?就像它们的其余部分一样?),而无需为每个客户端编写脚本来执行SQL Schema Compare已经针对这几个表所做的工作?

Red-Gate的SQL Compare以某种方式做到了这一点,但它对我们而言是隐藏的,因此不确定如何实现。排除不会删除,但在脚本上也不会出错。

更新:

选项“不在源中放下约束”似乎无法正常工作。它确实删除了一些约束,但是还有其他一些约束并没有删除约束。在redgate的工具中,当我们进行比较时,我发现了如何从中获取SQL,他们的产品根本没有说需要更新表,而Visual Studio却需要。它们的工作原理几乎相同,但是失败的表是根本不应该更新的表(请参阅下文)

更新2:

我发现的另一个问题是“忽略列排序规则”也无法正常工作,因为不应该删除的表被告知它们需要更新,即使这只是列更改的顺序,而不是实际的列或数据更改,这比任何东西都更像是一个错误报告。

Ignore column collation checked

Still showing column collation

最佳答案

对于这些类型的高级数据计算,我的建议是不要使用Visual Studio。将逻辑放在Sql引擎上,并在Sql中编写代码。由于Sql引擎的多用户锁定问题,当同时发生错误的用户操作组合时,这些类型的进程很容易失败。由于Sql引擎可以更改记录,因此Visual Studio工具无法解决数据锁定问题。如果您什至可以使用此功能,则只有在单用户模式下才能安全运行。

它是一种很好用的工具,比编写Sql容易,但沿此路径存在巨大的可靠性和一致性风险。

关于sql - 包含但不删除SQL Schema比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38705447/

相关文章:

sql - 从表中选择外键,其中具有相同外键的所有行中的列值之一大于给定值

visual-studio - 我可以使用 #pragma 链接到单个 obj 文件吗?

visual-studio - 我无法让文件背后的 specflow 代码重新生成

visual-studio-2010 - 在Visual Studio安装之间传输保存的数据连接

sql-server - 如何设置模式比较文件,以便它始终忽略特定的数据库模式?

azure - 架构比较超时

C# - UPDATE SET WHERE 查询问题 (OleDb)

sql - INSERT-SELECT 查询可以受竞争条件的约束吗?

sql - Hive时间戳转换问题

visual-studio - Visual Studio 击键 : Swapping lines