有人在 Visual Studio 中使用“数据库项目”吗?
Posted
技术标签:
【中文标题】有人在 Visual Studio 中使用“数据库项目”吗?【英文标题】:Anyone using "database projects" in Visual Studio? 【发布时间】:2009-03-16 14:13:55 【问题描述】:我最近尝试了一下(SQL 2008 版本),我发现它们还不错。好吧,唯一的问题是向导不够智能,无法在不先擦除所有数据的情况下更新数据库结构。这就是这些项目没有在实践中使用的原因吗?
实际上从未见过有人使用它们或根本没有提及它们。除非您明确查找,否则在博客和论坛中也看不到任何内容。
他们怎么了?
【问题讨论】:
Shog 你应该回到关于模式比较的评论中,这是一个关键数据,让我知道他没有使用 VS Data Dude。 【参考方案1】:我使用的数据库项目是 Visual Studio 数据库版的一部分。这是一个很棒的工具。基本上,您在创建脚本时定义整个架构,然后将其签入源代码管理。然后它内置了工具来生成不同的脚本,顺便说一下,这些脚本不会删除数据。
它还具有数据比较工具,因此您可以比较数据库之间的数据并生成脚本以使数据库相同。
最近的 GDR 版本添加了一些有趣的功能。这样听起来,如果您使用他们内置的部署方法,您可以生成一个部署包,当您运行它时,它将分析目标数据库并仅应用差异。
如果您有 Team Studio - Team Suite 或 Development 版本,那么您可以使用 Database Edition。
试一试,这是数据库开发的一次伟大变革
【讨论】:
你能引导我了解如何在 vs 中生成差异脚本吗?【参考方案2】:与 Glennular 一样,我们使用它们来控制我们的架构和 s'procs 的版本。
虽然我们有一个相当先进的版本控制结构(CI、自动部署到 dev、单击部署到 stage 和 prod);我们不包括该结构中的任何数据库项目。我们只是还不相信它。
更新:(用于太空中)
我们针对公司的职能领域(销售、营销等)有单独的 TFS 项目。在每个 TFS 项目中,我们都有一个 Main 和 Production 文件夹。我们还有一个包含数据库项目的 TFS 项目和另一个包含通用程序集/Visual Studio 项目的 TFS 项目。
发布后,我们从 Main 分支到 Production。我们没有临时分支,因为我们行动太快而无法处理。对与错,我们的生产力部分是由我们每周发布的生产级别的数量来衡量的;错误修复、新功能等。
CI 设置在 Main 分支上,这样每次签入都会导致 Build 服务器部署到我们的 DEV 环境中。然后运行单元和 Web 测试,如果成功完成,构建质量会自动设置为“开发”。当有人将构建质量更改为“暂存”时,这会导致任何先前的“暂存”构建被设置为“拒绝”,并导致该构建被推送到我们的暂存服务器,同时更新配置文件以指向正确的服务器。 (为此我使用了 TFS Deployer 和 PowerShell 脚本)。
QA 会在我们的暂存服务器上进行测试。一旦他们满意,生产团队就会将构建质量更改为“生产”。这会导致构建被发送到生产区域,然后手动复制到正确的位置。完成后,生产会通知开发人员,然后开发人员将该版本分支到生产文件夹中。 QA 也会收到通知,然后谁会进行一系列生产测试,以验证一切确实按预期工作。
我们设置了报告,以向我们展示生产版本之间存在哪些更改,以便我们了解正在部署的每个签入。这可以防止出现未知数,例如数据库更改等或其他一些潜在的破坏代码。
此外,我们的 BA 正在通过 Team System Web Access 跟踪工作项目,并了解这些项目何时投入生产。
尽管我们的 DBA 使用的是 Database Edition (GDR),但他们对自动部署的控制水平并没有留下深刻印象。我希望 Rosario 能够为产品线带来更好的部署控制;但在那之前,我们有 TFS Deployer 和 powershell。
【讨论】:
你能稍微扩展一下你的版本控制结构吗?【参考方案3】:我们使用它们。我们保留所有模式创建/更新脚本和存储过程。主要目的是我们可以将项目连接到 SourceSafe 或 SVN。
这是一种控制 SQL 脚本版本的简单方法。
尝试在 VS 中进行一些 SQL 测试有点奇怪,但你可以找到解决方法。
更新
我们实际上已将它内置到我们的部署脚本、我们的部署工具中,通过数据库项目(标记的文件夹除外)并运行所有脚本。我们刚刚构建了一个运行项目的快速工具。如果有人有其他解决方案来部署数据库项目,那将会很有帮助。
【讨论】:
【参考方案4】:我们使用数据库项目为我们的 SQL 脚本提供版本控制。我们也喜欢使用 Visual Studio 环境来编辑 SQL;对于我们的一些新开发人员来说,它比查询分析器更容易使用。
【讨论】:
【参考方案5】:我在几个付费项目中使用过它们,我认为它是一个很棒的工具。也就是说,我已经看到了一些问题。
如果 db 项目文件夹中的 .dat 文件与数据库的临时实例不同步,架构比较将给出不准确的结果。不确定这是怎么发生的,如果看起来有问题,请仔细查看架构比较并删除您的 .dat 文件(在关闭解决方案后)。
如果您有 20 多个数据库并且它们相互引用并使用循环引用......它会受到伤害。我还没有想出如何让它适应这种情况。 GDR 2 似乎提供了一些希望。
【讨论】:
以上是关于有人在 Visual Studio 中使用“数据库项目”吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 中从数据库中获取数据(使用 C#)时使 HTML 行可点击
Visual Studio 数据库项目 - 使用 SQLCMD 变量定义文件大小
如何在 Visual Studio 2012 中将数据添加到 Access 数据库
如何将本地数据库文件添加到 Visual Studio Mac 2017