在这篇文章中,我们将学习如何在CentOS中备份和恢复SQL数据库。这篇文章是关于在CentOS上管理SQL服务器这一主题的第三篇文章。在我之前的文章中,我们学习了如何使用SQL Server management studio在windows 10和CentOS Linux之间复制数据SQL数据库。
在这篇文章中,我们将学习如何使用SQL Server 2019导入导出向导来复制数据库。我已经在我的工作站上恢复了stackoverflow2010数据库。
我已经创建了一个虚拟机并安装了CentOS 8.0。虚拟机的 IP 地址是 192.168.1.47。我在 CentOS 的 SQL Server 实例上创建了一个名为 DevStackoverFlow2010 的空数据库。
在导出数据之前,让我们看看徽章表的行数。运行以下查询。
use StackoverFlow2010
Go
select count(1)[Rowcount] from Badges
查询输出
现在,让我们开始数据传输过程。打开SQL Server 2019导入导出向导。第一个屏幕是介绍和导入导出向导要执行的任务。点击下一步。

在 "选择数据源 "屏幕,你可以配置源连接细节。指定以下参数以连接到源数据库服务器。
- **数据源下拉。**SQL Server Native Client 11.0
- **服务器名称。**Nisarg-PC
- **认证。**Windows认证
- **数据库。**Stackoverflow2010。

在 "选择目标 "屏幕上,你可以配置目标连接的细节。指定以下参数以连接到源数据库服务器。
- **数据源下拉。**SQL Server Native Client 11.0
- **服务器名称。**192.168.1.47 (IP地址为Linux虚拟机)
- **认证。**SQL服务器认证(我已经配置了SQL服务器认证来连接到CentOS上的SQL服务器)
- **用户名:**sa
- **密码:**指定sa的密码
- **数据库。**DevStackoverFlow2010
以下是屏幕截图。

在指定表复制或查询界面,你可以选择以下任何一个选项
- **从表或视图复制数据。**选择这个选项,将所有的表和视图及其数据从源SQL数据库复制到SQL目标数据库。
- **写一个查询来复制要传输的特定数据。**如果你想从源数据库的一个或多个表或视图中复制一个特定的数据集到目标数据库,选择这个选项。我们可以写一个SQL查询来复制源数据库和目的地数据库之间的数据。
我们要从StackOverFlow2010复制所有的表和数据到DevStackOverFlow2010,所以选择第一个 选项。

在选择源表和视图界面,我们可以选择所有或特定的表和视图,其数据要在源和目标数据库服务器之间转移。我们要传输的是Stackoverflow2010数据库的数据,它的表很少,所以表和视图的列表被列在表和视图 网格视图的源列中。DevStackoverflow2010数据库是空的,没有任何表,所以表和视图网格视图的目标列将是空的。请看下面的图片。

现在,我们想把Stackoverflow2010数据库中的所有表和数据转移到DevStackoverflow2010数据库中;点击表和视图网格视图顶部的复选框。当我们点击该复选框时,向导会自动生成源数据库表的定义。点击 "下一步"。

SQL Server 2019导入-导出向导会创建一个SQL Server集成服务包。因此,你可以选择将包保存在文件系统上,也可以将其部署在SQL Server集成服务目录数据库中。在保存和运行包的屏幕上,你可以选择在文件系统或集成服务数据库中保存SSIS包。我们要把集成服务包保存到D:\Migration目录中。要做到这一点,选择 保存SSIS包 选项。
它启用了以下操作。
- SQL服务器。如果你想把包保存在集成服务目录中,选择这个选项。
- 文件系统。如果你想把SSIS包保存在一台电脑上,选择这个选项。
另外,我们可以定义SSIS包的保护级别。我们不想使用包保护;因此,从包保护级别下拉框中选择 "不要保存敏感数据 "选项。点击下一步。

在 "保存 SSIS 包 "屏幕上,输入以下选项的值。
- **名称。**输入所需的包名称。
- **描述。**描述SSIS包。
- **文件名。**指定文件名和位置。
点击 "完成",开始数据传输。

在 "完成向导 "屏幕上,你可以查看将由向导执行的操作列表。

数据迁移过程开始。

stackoverflow2010数据库很大,所以需要一些时间来完成。一旦数据被复制,运行下面的查询来验证数据是否已经被复制。为了验证,运行下面的查询。
use DevStackoverFlow2010
Go
select count(1)[Rowcount] from Badges
查询输出

正如你所看到的,Badges表的所有记录都被复制了。
总结
这篇文章解释了如何将SQL数据库的数据从Windows 10的SQL Server转移到CentOS的SQL Server。我已经解释了我们如何使用SQL Server 2019导入-导出向导将数据从源服务器转移到目标服务器。这种方法让你对管理表和数据有更多控制。假设我们正在测试一个应用程序的特定模块,以测试将数据库迁移到Linux操作系统后应用程序的行为。我们可以使用导入-导出向导,将特定的表和视图与数据一起迁移。下一篇文章将探讨自动化数据库维护任务的方法。
