【问题标题】:Can Red Gate SQL Source Control identify a case change?Red Gate SQL Source Control 能否识别案例更改?
【发布时间】:2010-12-01 18:16:49
【问题描述】:

我刚刚对源代码控制下的数据库进行了一些仅限大小写的更改(只是列名),并注意到 Red Gate SQL 源代码控制没有选择它们(没有提交更改)。

该工具是否会在本机识别更改以防万一?它是否依赖于数据库的排序规则?这些名称一直存在于 ORM 中,因此大小写在编译时变得非常重要。

更新

只是为了给出一个用例场景,我有一个在 SQL 源代码控制下运行的数据库,它在不区分大小写的 SQL_Latin1_General_CP1_CI_AS 排序规则下运行,这对数据库来说很好。然后我有一个使用 LINQ to SQL 类从数据库中持久化的 Web 应用程序。

然后我决定将“ID”更改为“Id”以让 FxCop 满意。我已经在数据库中更改了它,重新生成了类并更改了 Web 应用程序中的任何引用。因为我无法在源代码控制下进行此更改,所以如果其他人从 VCS 中提取数据库并重新生成 LINQ to SQL 类,那么对“Id”的每个引用都会在 .NET 端中断。

【问题讨论】:

  • 一个带有单一的、从未见过的标签的问题不太可能被回答,甚至被阅读。

标签: sql-server


【解决方案1】:

在花了更多时间深入研究这个问题之后,Red Gate 的 Chris 不确定解决方案,并且没有从这篇文章或 equivalent one in the Red Gate forums 得到任何其他反馈,我称这是一个错误。我很想被证明是错误的,但事实似乎就是这样(对不起双关语!)。

所以要专门回答我的问题,不,SQL 源代码管理似乎无法原生地版本化仅区分大小写的更改。但是,有一种解决方法涉及在工作目录中进行更改并通过 TortoiseSVN 将其提交回来(假设 VCS 是 SVN)。完整的详细信息现在在Defeating Red Gate’s SQL Source Control insensitivity

【讨论】:

  • 我同意该工具中有一个额外选项可以覆盖数据库的排序规则,但是如果默认行为不区分大小写的数据库被简单地视为区分大小写,这可能会很奇怪出于源代码控制的目的。在实践中,当您对同一对象进行“有意义的”更改后,问题会自行纠正,因为 SQL 源代码控制会再次编写脚本,这次是您的更正。
  • 我认为附加选项是可行的方法,就像 SQL 比较具有“将项目视为区分大小写”选项,可用于在任何排序规则类型之间同步大小写。但我还认为,无论数据库如何处理执行中的案例,对于能够将这些对象置于 SQL Server 中存在的源代码控制之下是一个单独的问题。就个人而言,我不认为源代码管理问题应该与排序规则问题有关。
  • 是的,我们正在尝试确定该选项是否应该默认打开。关于源代码控制行为,我们可能决定最简单的选项是始终区分大小写,这会鼓励一致性。我们会及时通知您。感谢您提请我们注意。
  • 在设置选项卡上,可以编辑database comparison options。从3.7.7 开始,您可以打开 CaseSensitiveObjectDefinition 以区分大小写比较不区分大小写数据库的 object 名称。列名等其他名称仍将不区分大小写进行比较,并且需要您找到的解决方法。
猜你喜欢
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2011-07-30
  • 2011-03-05
  • 2023-02-21
  • 2021-04-10
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多