65.9K
CodeProject 正在变化。 阅读更多。
Home

复制数据库向导 (MS SQL Server 2005 及更高版本)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (3投票s)

2011年3月11日

CPOL

5分钟阅读

viewsIcon

42117

复制数据库向导如何帮助用户进行升级和迁移项目。

引言

有一次在工作中,我遇到了一个需求,开发团队需要尽快在开发环境中获得生产数据库。需要测试关键的代码更改,而且不能有任何麻烦。这时,复制数据库向导真的帮了我大忙。在这种情况或需要升级数据库时,它是一个非常方便的工具。

我能够将数据库提供给开发人员,使他们能够完全灵活地操作数据库并严格测试他们的更改。另一个优点是我们可以传输所有数据库对象,如表、存储过程和视图、登录名、相关的 SSIS 包、SQL Server 代理作业等,这与仅能将必需的对象(表)传输到目标环境的导入/导出不同。与 SQL Server 2000 或更早版本的传统升级不同,后者涉及手动分离(从源服务器)和重新附加(到目标服务器)数据库文件,此选项在产品级别处理这些问题。

复制数据库向导可用于将数据库及其所有关联对象复制或移动到任何服务器。

  • 在升级服务器时,复制数据库向导是快速将数据移动到新系统的便捷方法。
  • 使用该向导在另一台服务器上创建数据库的备份副本,以备紧急情况使用。
  • 开发人员可以复制现有数据库,并使用该副本进行更改,而不会危及实时数据库。

复制数据库向导被证明是管理功能的一个宝贵工具。

注意:复制数据库向导适用于 SQL Server 2005 及更高版本。

现在我们知道了这个工具多么有用,让我们开始学习它。

创建一个示例数据库(SampleDB),添加一些表(dbo.Students、dbo.teachers),并创建一个存储过程 GetTeacher。

我们将把这个完整的数据库传输到 SQL Server 的第二个实例

右键单击数据库 > 任务 > 复制数据库。选择源服务器。

接下来,选择您打算复制/移动 SampleDB 数据库的目标服务器。

在本例中,我们将将其传输到第二个实例

选择确定,然后单击下一步。

在下一个屏幕上,有两种复制数据库的选项:

  1. 使用分离和附加方法
  2. 使用 SMO(SQL Server Management Object)方法。

让我们来了解一下这些选项。

选项 1 由于在传输完成之前将数据库置为脱机状态,因此可以非常快速地传输到目标。虽然这是速度至上的一个很好的选择,但当数据库停机时间非常关键时不建议使用。

优点 缺点
  • 非常快速的传输。
  • 当目标数据库的即时可用性比源数据库脱机更关键时建议使用。
  • 此选项会在传输进行期间将数据库置为脱机状态。用户/应用程序将无法连接到数据库。
  • 当源数据库的停机时间非常关键时,这不是一个好的选择。

选项 2 使用 SMO 选项将数据库从源传输到目标。虽然这是一个较慢的过程,耗时较长,但它会保持数据库在线。对于不能停机的数据库 DBA 来说,这是一个非常好的选择。

优点 缺点
  • 数据传输缓慢。
  • 当源数据库的可用性非常关键时建议使用。
  • 此选项会在传输进行期间保持数据库在线。用户/应用程序将一如既往地能够连接到数据库。
  • 当目标需要数据库但又希望尽快完成且关键时,这不是一个好的选择。

我们将为我们的演示选择 SMO 选项。

选择数据库”屏幕允许您选择所有需要移动/复制的数据库。此外,每个选定数据库对应的移动(不保留源数据库)和复制(保留源数据库的副本)选项,都可以选择保留或删除选定数据库的源副本。

让我们选择复制 SampleDB,然后单击下一步

在“配置目标数据库”屏幕上,提供目标数据库的名称。

如果目标服务器上已存在同名的数据库,我们有两个选项可供选择:

  1. 取消传输并中止作业。
  2. 删除目标上的数据库,然后继续传输,覆盖现有数据库文件。

让我们选择第一个选项,然后单击下一步

在“选择服务器对象”屏幕上,我们可以选择传输 Master 上的存储过程、SSIS 包、登录名、SQL Server 代理作业或源数据库上配置的终结点。

选择需要传输的内容,然后单击下一步

配置此包”屏幕允许我们将此包保存到自定义路径(包位置),以便重用。在发生故障时,Windows 事件日志上的作业日志记录确实非常有用。

安排包”选项有助于我们在任何特定时间安排此作业(包)。在安排的情况下,保持 SQL Server 代理正常运行非常重要。它将在预定时间运行。

出于演示目的,让我们选择立即运行。

单击完成,然后作业开始运行。

我们的作业成功完成。

要验证 SampleDB 是否已传输到第二个实例服务器,请检查 SSMS 和对象资源管理器。查看对象、存储过程和登录名是否已成功传输到目标服务器。

这样就完成了复制数据库向导实用程序的整个过程。

© . All rights reserved.