【问题标题】:Replace SQL Server Database替换 SQL Server 数据库
【发布时间】:2010-01-21 18:02:16
【问题描述】:

供应商有一个数据数据库(只读),每周都会通过 dvd 发送给我们。他们的升级脚本分离了现有的数据库副本,覆盖了 MDF 和 LDF,删除了所有用户并重新创建了他们认为适当的安全性。有没有一种方法可以在不使数据库脱机的情况下同步数据?这是一个 24/7 的设施,在更新期间会导致 15 分钟的停机时间。

辅助信息: 该数据库有大约 50 个表,总大小为 400 MB。实际更改的数据量约为 400kb。服务器正在运行带有 SQL Server Enterprise Edition 2008 的 Server 2008。

【问题讨论】:

    标签: sql-server database


    【解决方案1】:

    阅读 Red Gate 数据比较

    http://www.red-gate.com/products/SQL_Data_Compare/index.htm

    这将为您生成一个差异脚本,您可以将其应用于现有数据库。

    这也有能力自动同步你的数据

    您必须将传入的数据库加载到服务器才能执行此操作。

    【讨论】:

    • 在使用 SQL Server 时不能没有 RedGate 工具。如果只是 400k 的数据发生变化,那么实时更新应该没问题。您甚至可以编写构建脚本、备份并运行比较/同步。
    • 这些工具让我有点害怕......你能在不锁定表的情况下比较高使用率实时数据库的数据吗?
    • 这不会生成完整的无用日志吗?此外,如果您进行实时更新,您将进行所有更改并发出一次提交?您是否有足够的空间来执行此操作,或者您会允许脏读吗?那么这个过程中的任何查询都会得到一些旧行和新行的混淆数据?
    • 好吧,我只看到了 400MB,而不是 400Kb……同意了。只要确保最后只有一个提交即可。哦,对了,这是 SQL Server……如果您的系统可以处理,请打开一致读取。
    • 这非常有效。谢谢你的推荐。
    【解决方案2】:

    您可以做的就是让两个数据库 DB_A 和 DB_B 在他们向您发送您安装的新数据库并替换 DB_B 时。与此同时,您的所有用户都在使用 DB_A。然后将 DB_A 重命名为 DB_C,将 DB_B 重命名为 DB_A。这会将停机时间减少到几乎为 0。或者您可以在 DB 准备好后将连接更改为从 DB_A 指向 DB_B。

    【讨论】:

    • 连接打开时不能重命名数据库。您必须先将数据库设置为单用户模式(但必须等到数据库中没有用户/强制所有用户退出),进行交换并将其设置回多用户模式。
    【解决方案3】:

    不敢相信没有人提到过这种方法。

    KISS:您可以将恢复(或附加)数据库加载到新目录,然后重新配置您的应用程序(例如通过 ODBC DSN)以使用新数据库 - 一旦您翻转完成,您可以分离旧的。这种方法被称为“滚动升级”,在所有地方都用于 24/7 站点。

    【讨论】:

      【解决方案4】:

      您可以编写自己的程序,连接到供应商提供的数据库和您自己的数据库(可能是 DTS 或 C# 应用程序),并了解哪些数据应该从供应商数据库移动/迁移到您自己的数据库中。

      【讨论】:

        【解决方案5】:

        您可以将数据库加载为单独的数据库,然后使用SQL Data Compare 之类的实用程序来区分数据差异并生成脚本。

        【讨论】:

          【解决方案6】:

          您可以使用 Red-Gate Data Compare 等工具同步数据。

          【讨论】:

            【解决方案7】:

            这应该是备份/恢复操作。分离/重新连接既快速又简单,但显然会使数据库脱机。

            或者,他们可以提供差异脚本来更新他们需要的任何数据和架构更改。在活动数据库上运行脚本(基本上是一组用于模式更改的创建、更改、添加和删除,以及用于新数据的插入)以使其保持最新状态。这样做的好处是脚本可以很容易地进行版本控制。

            【讨论】:

              【解决方案8】:

              您可以使用 SSIS 创建数据导入/更新过程。在这样做之前我会遇到的一个问题是,如果在很短的时间内表有新数据并且表 b 没有更新,那会是什么问题?所有数据都必须保持同步吗?如果可以的话,请遵循 Jose Chama 的建议;即使是一分钟也不能让事情不同步。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-04-28
                • 2011-02-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-12-22
                • 1970-01-01
                相关资源
                最近更新 更多