【问题标题】:How best to copy entire databases in MS SQL Server?如何最好地在 MS SQL Server 中复制整个数据库?
【发布时间】:2010-09-09 22:18:40
【问题描述】:

我需要将大约 40 个数据库从一台服务器复制到另一台服务器。新数据库应该有新的名称,但所有的表、数据和索引都与原始数据库相同。到目前为止,我一直:

1) 创建每个目标数据库
2) 使用“Tasks->Export Data”命令分别为每个数据库创建和填充表
3) 使用 SQL 脚本重建每个数据库的所有索引

每个数据库只需三个步骤,但我敢打赌会有更简单的方法。有任何 MS SQL Server 专家有什么建议吗?

【问题讨论】:

    标签: sql-server database


    【解决方案1】:

    另一个快速简单的检查:

    简单的 SQL 批量复制

    http://projects.c3o.com/files/3/plugins/entry11.aspx

    【讨论】:

      【解决方案2】:

      【讨论】:

        【解决方案3】:

        如果您使用备份/恢复解决方案,您可能会有孤立用户,因此请务必查看 this article 了解如何修复它们。

        【讨论】:

          【解决方案4】:

          已经有更好的答案,但这是一个“也跑了”,因为它只是另一种选择。

          关于免费的低价,您可以查看Microsoft SQL Server Database Publishing Wizard。此工具允许您编写模式、数据或数据和模式的脚本。 Plus 可以从 UI 或命令行运行

          【讨论】:

          • 这就是我要做的...该工具是一个救生员,因为它将架构和数据复制到脚本中 - 即使对于 blob 对象也是如此
          【解决方案5】:

          Redgate SQL 比较和 SQL 数据比较。迄今为止,比较捆绑包是我工作过的公司做出的最好的投资。移动电子培训内容轻而易举。

          【讨论】:

            【解决方案6】:

            为了方便

            • 停止 server/fcopy/attach 可能是最简单的。
            • 备份/恢复 - 可以非常简单轻松地断开连接
            • 传输 DTS 任务 - 需要文件复制权限
            • 复制 - 最简单的设置

            考虑目标服务器上的权限、用户和组的事情,尤其是。如果您正在传输或恢复。

            【讨论】:

            • 权限、用户和组都是优点。我会给你一个升级模式,但我没有声誉......
            • 是的,我的数据被烧毁了,正在传输数据库,其中角色成员(无效)未注册登录或来自另一个域的域成员。
            【解决方案7】:

            鉴于您在多个数据库上执行此操作 - 您需要一个简单的脚本解决方案,而不是点击式解决方案。

            这是我保留的备份脚本。 让它为一个文件工作,然后为多个文件修改它。

            (on source server...)
            BACKUP DATABASE Northwind
              TO DISK = 'c:\Northwind.bak'
            
            (target server...)
            RESTORE FILELISTONLY
              FROM DISK = 'c:\Northwind.bak'
            
            (look at the device names... and determine where you want the mdf and
            ldf files to go on this target server)
            
            RESTORE DATABASE TestDB
              FROM DISK = 'c:\Northwind.bak'
              WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
              MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
            GO
            

            【讨论】:

            【解决方案8】:

            也许最简单的方法是分离/重新连接。右键单击数据库上的服务器管理器,任务 --> 分离。然后将 MDF/LDF 文件复制到新服务器,然后通过单击服务器图标和任务--> 附加重新附加。它会要求您提供 MDF 文件 - 确保名称等准确无误。

            【讨论】:

            • 目前为止最简单,只要你有足够的磁盘空间来复制 mdf 和 ldf。
            • 对不起 rob -- 我认为他需要一种脚本方法,而不是点击方法。
            • 这是一个很好的答案,但我认为我同意 Leon 的观点,脚本更好。
            • sp_detach_db 和 sp_attach_db。它不需要指向和点击。
            • 警告,当然,你必须关闭源。这不适合我见过的许多被问到这个问题的场景(生产数据到开发数据、热备用等)
            【解决方案9】:

            使用备份将数据库恢复到具有新名称的新服务器。

            【讨论】:

              【解决方案10】:

              使用企业管理器中的标准 SQL 备份工具备份数据库,然后当您在第二台服务器上恢复时,您可以指定新数据库的名称。

              这是维护完整架构的最佳方式。

              【讨论】:

                【解决方案11】:

                备份 -> 恢复是最简单的,如果不使用复制的话。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2022-01-05
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-04-05
                  • 1970-01-01
                  • 2010-09-19
                  • 1970-01-01
                  • 2020-02-24
                  相关资源
                  最近更新 更多