我的 .NET 开发团队最近进行了大规模重组,重组的结果是,我们现在有能力执行诸如设置源代码管理和数据库备份以及开发数据库之类的事情。但是,我们都不是真正的 DBA,因此我们不知道如何在数据库端执行此操作。
我们希望有一些方法可以让开发人员可以使用真实数据进行测试,但无法更改生产服务器上的数据。现在,我们只有一个数据库,所以如果我们需要测试对网站的更改,我们必须制作虚拟记录来测试。
基本上,我们知道这是一个糟糕的设置,但我们不知道更好,我们真的很想改变。我在网上找不到任何内容来概述如何实际设置可用于应用程序开发和数据库开发的开发环境。
我看过如何开发数据库(工作流程)?以及如何为小型网络团队设置本地数据库开发流程?,但第一个没有解决我的问题,第二个假定了很多我没有的知识。我对“正常”数据库开发实践、推出/回滚脚本、如何编写数据库开发测试、模式比较工具等一无所知(这些都是我在搜索中看到的术语,但我不知道不知道去哪里了解它们。)
有谁知道我可以去哪里了解这些东西?和/或任何人都可以给我一些关于如何设置我不知道如何描述的环境的建议吗?
我的团队非常反对使用 TFS。我不确定为什么(我自己从未使用过它),但他们喜欢 Git,而我知道 Git,所以这是我们决定的源代码控制。我的主要问题实际上是如何为不同的环境设置单独的服务器,同时在开发中使用当前数据。
这些主题中的大多数都不是太难,但我认为您可能很难从头开始。
此外,因为您是从开发人员工作流的角度来看它的,所以您可能会发现这类信息并没有被过多讨论。您可能需要付费请顾问进来,帮助您设置具有基本备份和维护的开发服务器,或者为您创建工作流程。
如果你决定自己动手,你会在 YouTube 上搜索有关 SSDT 或 SQL Server 数据库项目的视频,这是 Visual Studio 的一部分;你想要的大部分内容都以某种方式被覆盖(单元测试、通过 TFS 或类似的源代码控制、通过 msbuild 的部署,甚至模式比较)。单元测试通常也使用称为 tSQLt 的框架来完成。部署有时使用 Flyway 完成。数据库备份和维护通常使用 Ola Hallengren 脚本或 Minion Backup / Reindex 完成。
您还可以查看 SQL PASS,其中有很多章节都有关于每个主题的在线培训视频。然而,其中大部分将通过 YouTube 搜索出现。
当然,这些都是免费工具,但有一些关于 Visual Studio 的警告。
对于廉价的非定制培训,Pluralsight 提供了有关上述每个主题和其他数据库管理的视频。但是,如果您不是 DBA,那么您可能不想浪费时间学习所有这些内容,并且您仍然会受困于创建自己的工作流。没有从头到尾的“开发人员工作流程”。
Red Gate 开发了很多 SQL Server 开发软件(特别是 SQL Compare、SQL Source Control 和 SQL Tests)。您可以搜索他们的培训视频,了解有关这些或其他工具中工作流程的一些想法。同样,您可以在 YouTube 上找到这些内容,尽管作为营销的一部分,他们还发布了一些可免费下载的书籍。
Community Wiki 回答来自Antoine Hernandez的问题评论
我支持使用 SQL Server Data Tools (SSDT) 进行开发和源代码控制。我见过的大多数地方都是 .NET 开发人员使用 Team Foundation Server (TFS),因此自然的步骤是将 SSDT 用于数据库部分。然后您可以像对待 .NET 开发一样对待您的数据库开发(假设您有针对不同环境的独立服务器)。使用 SSDT 为您提供了源代码控制、架构和数据比较工具,以及一种将数据库部署构建到您的正常构建脚本中的方法。
源代码控制只是 TFS 的一个组件,它可以与 Git 集成用于源代码控制部分,没问题,但这不是您想要的。至于如何设置服务器,每个回答的人可能有不同的配置服务器的方法。理想情况下,您希望应用程序服务器与数据库服务器分开,让 SQL Server 服务使用单独的专用帐户运行,让应用程序使用专用的域帐户连接到数据库,并且仅在生产中拥有真实数据。其他任何事情都取决于您可用的配置选项。
不确定您使用的是哪个版本,但这里是一个不错的起点:
规划 SQL Server 安装(TechNet)