【问题标题】:Is the programmer of a database program responsible for database backups?数据库程序的程序员是否负责数据库备份?
【发布时间】:2009-02-07 08:10:51
【问题描述】:

假设您销售的应用程序将其数据存储在 Microsoft Sql Server 数据库中。一些客户是拥有现有 Sql 安装和维护它们的人员的大公司。其他客户是通过安装程序安装 SQLEXPRESS 版本的小公司。

数据库很快就会包含大量重要数据,需要备份。这是谁的责任?

应用程序是否应包含用于备份数据库的 UI,并在未运行备份时发出警告?

或者应用程序是否应该只在其文档中包含备份说明?

或者这是客户而不是程序员要解决的问题?

【问题讨论】:

    标签: sql-server database backup


    【解决方案1】:

    在大多数情况下,我希望客户在不涉及程序员的情况下处理备份。当然,如果客户要求您作为程序员在应用程序中构建备份提醒,这没有错。

    在某些情况下,如果客户对他们所使用的技术了解甚少或根本不了解,我还认为,作为系统开发人员,我们有责任告知他们在维护方面的预期工作。

    即使是专业客户,我也经常在文档中指定最低备份要求,仅仅是因为你得到了你想要的。

    【讨论】:

      【解决方案2】:

      如果您正在构建安装 SQLExpress 的软件,那么您应该提供备份功能。默认情况下,SQLExpress 不附带 Management Studio,我认为将 Management Studio 作为应用程序的一部分安装(或要求客户这样做)是一个主要的可用性问题。

      BACKUP DATABASE 命令很容易从您的应用程序中执行。确实没有理由提供此功能。

      对于拥有 IT 人员的客户,他们仍然可以使用现有流程自行处理备份。

      每个人都赢了。

      【讨论】:

      • SQL Express 安装的一个很好的观点。支持您的应用程序的简单备份确实很容易实现。
      • 但是BACKUP DATABASE命令执行起来这么简单吗?如果您直接从 ui 运行它,则应用程序将冻结,直到备份完成 - 如果它是一个大数据库,则可能需要一些时间。此外,您确实需要一个浏览文件夹对话框来显示服务器上的文件夹 - 就像 sqlms 中的那样。
      • 您的应用是 Windows 应用还是 Web 应用?
      • 啊,那你真的没有借口 :) 在工作线程中执行命令(与 Management Studio 相同)。提供文件/文件夹浏览对话框实际上是免费的。
      • 文件浏览器对话框很难!您必须在服务器上而不是在客户端上显示文件系统 - 并且只有运行 Sql Server 的用户帐户可以写入的文件夹
      【解决方案3】:

      这是客户的责任。不过……

      我相信你有三个选择:

      1. 提及应备份数据库。
      2. 就如何备份数据提出建议。
      3. 提供服务以维护备份程序。

      可以使用其中一种或全部三种。这完全取决于买卖双方的感受。

      【讨论】:

        【解决方案4】:

        备份

        根据我的经验,很大程度上取决于数据库的安装方式和应用程序打包方式。如果您将应用程序出售给隐藏或抽象了数据库层实现细节的客户,那么典型的客户期望是备份解决方案作为软件的一部分提供。这种期望有多种原因。

        在我的脑海中,其中之一是支持应用程序的 IT 部门无法确定应用程序应该如何备份数据库。有时,某些供应商的数据库转储可能会导致锁定问题,从而中断正常的应用程序操作。我相信您可以想象 IT 部门可能会对捆绑 DB 的应用程序提出其他投诉。

        对于连接到现有数据库的安装,我认为这些数据库的数据库管理员处理备份是一个合理的期望。但是,您(应用程序提供商)记录需要备份的内容非常重要。是否存在需要保持其精确顺序的序列和索引?是否创建了 TB 级的数据,如果丢失,这些数据对您的客户可能并不重要?备份期间应用程序的状态如何(如上所述)?应用需要关闭吗?

        恢复

        更多的问题是恢复。如果需要部分恢复数据怎么办?这怎么会破坏您的数据存储?您的应用程序是否将数据存储在其他任何地方(文件、网络),这些数据可能会因历史备份而处于不可靠/损坏状态?

        总之,长话短说 - 当我是客户时,知道应用程序供应商已对备份/恢复流程进行 QA 并提供支持,我感觉好多了。实际上,这是我当前项目的一个大客户的要求。他们不仅有能力管理数据库,还希望我们对自己的数据负责,并保证流程完美无缺。

        最后,根据具体应用的实施、要求和行业期望,您的成果可能会有所不同。

        【讨论】:

          【解决方案5】:

          我个人认为备份数据的说明非常重要。大多数客户应该能够在不需要 GUI 的情况下自己处理备份,而 GUI 将花费一些时间和金钱来开发。

          提供备份说明将有助于确保他们知道自己需要做什么,并且知道这是他们的责任。好的说明也会(希望)减少他们需要的支持数量他们自己的数据库。

          我认为用于备份的 GUI 仅在特殊情况下才是必不可少的,在这种情况下,用户根本不会精通技术,数据安全性很重要,而且用户无法访问(或不想花钱购买)IT 员工。

          【讨论】:

            【解决方案6】:

            让应用程序运行备份解决了“如何找回我不小心删除的数据?”的问题,但不能解决硬盘驱动器崩溃的问题。您的应用程序不会确保备份到磁带并且磁带在异地正确存储。成为迫使他们对自己的数据承担一定责任的最佳解决方案的一部分。不要因为他们收到指示备份完成的消息框而导致他们产生错误的安全感。

            【讨论】:

              【解决方案7】:

              如果您提供 SQL Server Express,请务必与客户讨论备份要求(当然只有在可能的情况下)。

              这里的一些人建议您让 IT 用户来处理问题。这当然是完全正确的,但是它确实存在一个固有的问题,即令人担忧的 IT 支持人员对数据库管理员一无所知,甚至更不知道如何实施一个好的备份策略。

              仔细考虑您的个人客户的需求,并可能添加自动备份作为补充,或者如果您觉得慷慨,可以免费添加。 毕竟这是 SQL Express,许多客户不会期望了解有关数据库备份的任何内容。

              【讨论】:

                猜你喜欢
                • 2019-04-12
                • 1970-01-01
                • 1970-01-01
                • 2018-10-28
                • 2011-04-07
                • 2017-08-14
                • 1970-01-01
                • 2013-09-20
                相关资源
                最近更新 更多