Sql server sql server-数据备份到本地-是否有必要

Sql server sql server-数据备份到本地-是否有必要,sql-server,database,vb6,Sql Server,Database,Vb6,在我多年的经验中,我总是通过使用IP地址、用户名和密码创建新连接来连接数据库。 我最近加入了一家公司,他们使用一个用VB6编写的桌面应用程序,它有一个SQL服务器后端。这里的做法是,获取最新版本的SQL服务器的备份,并将其命名为另一个DB,将其用于测试目的 我们现在遇到了一个问题,用户创建了大量数据库,需要清理 我的问题是:是否可能有一个远程存在的中央数据库,每个人都可以连接到该数据库并获取数据?为了实现这一目标,我们需要记住什么,这样每个人都可以访问一个数据库,在那里他们可以进行更改 这是可能

在我多年的经验中,我总是通过使用IP地址、用户名和密码创建新连接来连接数据库。 我最近加入了一家公司,他们使用一个用VB6编写的桌面应用程序,它有一个SQL服务器后端。这里的做法是,获取最新版本的SQL服务器的备份,并将其命名为另一个DB,将其用于测试目的

我们现在遇到了一个问题,用户创建了大量数据库,需要清理


我的问题是:是否可能有一个远程存在的中央数据库,每个人都可以连接到该数据库并获取数据?为了实现这一目标,我们需要记住什么,这样每个人都可以访问一个数据库,在那里他们可以进行更改

这是可能的,但通常不是一个好主意。如果所有的数据库访问都只是查询,那就可以了(不过也可以了),但是想象一下,如果开发人员a对开发人员正在为其编写报告的表进行某些更新,或者如果数据库是以不受控制的方式恢复的,那么就会出现混乱。开发和测试需要大量的管理工作,需要多少数据库以及需要在哪里,这取决于对开发和测试需求的分析。

您这样做的能力实际上是一个功能和/或程序问题。没有任何技术因素阻止您为dev/test使用单个共享数据库。挑战在于,开发/测试环境往往具有破坏性和/或破坏性

如果您有一个用于所有开发和测试需求的数据库,那么您可能几乎没有完成任何工作。一个开发人员修改一个对象(SP、FN、表、视图等)可能会破坏其他所有人(或任何人)。运行压力测试的测试人员会让其他人对缓慢的响应、超时等感到愤怒。。。有人决定测试总是加密的,甚至是像TDE这样更简单的测试,结果可能会破坏所有人

开发环境在签入之前几乎总是需要自己的沙箱。签入代码/模式,然后在模拟prod的中心环境中进行测试,然后再进入(理想情况下)与prod完全相同的pre-prod。这是非常基本的,尽管每个团队/公司都会有其变体


您可以立即做的一件事是自动执行prod数据库的副本备份,这样您就可以将一个新的.bak放到一个公共位置,每个人都可以从该位置抓取并恢复到自己的实例。这将减少对生产系统的影响,并减少存储消耗。另一个好处是您可以删除对生产数据库的所有非必要访问—这非常非常重要。最后,一旦这是标准操作,您可以在将来轻松地实施进一步的控制或任务(例如,恢复到安全实例,混淆/屏蔽敏感数据,为开发/测试使用进行新备份)。

我们已经使用单一的集中开发/测试环境十多年了,有多达50名全职开发人员在使用它——我想说它工作得很好。大多数更改都是表中的新列,并不是说很多开发人员同时使用相同的表/模块,所以不会引起太多问题

对于每个版本,我们的所有存储过程/函数都会分别重命名(通过在最后添加一个版本号),并在编译过程中自动安装,即使对于开发人员也是如此。对于开发人员编译,版本号还包括开发人员用户ID。这样,在开发中更改存储过程不会破坏测试环境,也不会破坏其他开发人员正在使用的过程


这样做的最大好处是,我们可以使用大小类似的数据库进行测试和生产。

感谢所有的答案。我们都在团队中进行了讨论,并提出了适合我们团队的流程:

  • 有一个主数据库从最新的稳定源备份和恢复
  • 只有QA团队具有对此数据库的写访问权限
  • 开发人员使用主备份创建自己的测试数据库
  • 如果需要新数据,请编写SQL脚本来添加它
  • 在其副本上运行单元测试和E2E测试
  • 提供新的测试和脚本,以向QA添加新数据(如果有)
  • QA在主机上运行测试和数据脚本
  • 测试通过后,如果有SQL更新脚本,QA将从备份中恢复主数据库(以删除通过运行测试所做的数据更改),运行SQL脚本更新数据,然后将其备份为新的主数据库
  • 脚本被添加到源代码管理中,因此我们有一个历史记录

注意:作为额外的保护措施,我们可以在其他地方保存第一个主数据库的副本。因此,如果有人做了一些愚蠢的事情并破坏了它,我们可以检索它并运行所有SQL脚本来更新它。

非常感谢@SQLmojoe。这是一个好主意,备份PROD数据库。此外,在我的公司里,要做到这一点也面临着挑战。我们遵循严格的ISO指南,必须定期清理产品数据的任何副本。您认为,当团队中的每个人都将prod数据恢复到自己的实例中时,会对其进行控制吗?如果您自己生成其他人使用的“主”备份,那么您已经控制了分发的新鲜度。开发/测试工作站更难处理。您可以设置域策略并创建作业以定期扫描和报告冲突。所有工作站都应该已经在设置时向主机添加了域管理员和其他域作业/监视器帐户(如果没有,请与AD管理员合作)。建议不要自动清理(刷新或删除)正在使用作业的作业。你冒着清理长期压力测试的风险,让人们非常生气。