C# 处理dev&;戳

C# 处理dev&;戳,c#,asp.net,sql,C#,Asp.net,Sql,这可能是一种愚蠢的做事方式,但我的公司就是这么做的。。。我们在dev中进行模式更改,随后必须使用最新的版本将其投入生产。因此,我们手动打开生产SQL 2008数据库,使用设计器进行相关修改,部署新代码,然后期待最好的结果。有时我们忘记对prod模式进行更改,这显然会导致严重的问题。那么,肯定有更好的办法吗?理想情况下,我们希望有一些免费的工具来帮助我们识别和部署模式更改,但我不知道有这样的东西存在 如果ASP.NET与VS2010有区别的话,我们会使用它。请参阅。我主张。始终将每个更改(无论多么

这可能是一种愚蠢的做事方式,但我的公司就是这么做的。。。我们在dev中进行模式更改,随后必须使用最新的版本将其投入生产。因此,我们手动打开生产SQL 2008数据库,使用设计器进行相关修改,部署新代码,然后期待最好的结果。有时我们忘记对prod模式进行更改,这显然会导致严重的问题。那么,肯定有更好的办法吗?理想情况下,我们希望有一些免费的工具来帮助我们识别和部署模式更改,但我不知道有这样的东西存在

如果ASP.NET与VS2010有区别的话,我们会使用它。

请参阅。

我主张。始终将每个更改(无论多么微小)部署为升级脚本。然后,在转移到生产环境时,只需运行从版本N到版本N+1的升级脚本。有效禁止所有“可视化”数据库设计/管理工具


在这个方向上有各种各样的努力,代码优先的ORMs,部署等等。就个人而言,我发现显式升级脚本从长远来看是一个更好的选择。

我相信Team Foundation Server有一种方法来存储和释放每个版本的数据库模式更改。除此之外,我同意Remus Rusanu的观点。所有更改都必须编写脚本,并放入随应用程序的每个版本发布的版本脚本中。

VS2010的模式比较工具如何:它似乎可以区分开发和生产模式,并自动为我提供一个升级脚本??即VS GDR,由vsdbcmd提供支持:。当我使用一个基于diff的工具时,我的问题就开始了,它天真地提供通过选择来修改一个表。。。转换为和sp_重命名(这是大多数diff工具所做的一个技巧)。除此之外,该表有1600亿行,磁盘容量为1.5Tb。这就是为什么我宁愿使用升级脚本,所以我确切地知道会发生什么。此外,脚本被签入到源代码管理中,我可以有一个更改的历史记录。如果你简单地将dev与prod区分开来(考虑到这个工具做得很好),那么你最终会得到当前的dev。除了变更跟踪问题和变更历史记录之外,您假设没有开发人员犯过任何错误并将其留给开发数据库。