使用备份和还原将 SQL Server 数据库从 Windows 迁移到 Linux

建议使用 SQL Server 的备份和还原功能将数据库从 Windows 上的 SQL Server 迁移到 Linux 上的 SQL Server。 在本教程中,将逐步完成使用备份和还原方法将数据库迁移到 Linux 的必需步骤。

  • 使用 SSMS 在 Windows 上创建备份文件
  • 在 Windows 上安装 Bash shell
  • 将备份文件从 Bash shell 移到 Linux
  • 在 Linux 上通过 Transact-SQL 还原备份文件
  • 运行查询以验证迁移

1.1 必备条件

若要完成本教程,需满足以下先决条件:

1.2 在 Windows 上创建备份

有多种方法可在 Windows 上创建数据库的备份文件。 以下步骤使用 SQL Server Management Studio (SSMS)。

  1. 在 Windows 计算机中启动 SQL Server Management Studio。

  2. 在连接“对话框”中,输入“localhost”。

  3. 在“对象资源管理器”中,展开“数据库”。

  4. 右键单击目标数据库,选择“任务”,再单击“备份...”。

   5. 在“备份数据库”对话框中,验证“备份类型”是否为“完全”,以及“备份到”是否为“磁盘”。 注意文件的名称和位置。 例如,SQL Server 2016 上名为“YourDB”的数据库的默认备份路径为 C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup\YourDB.bak

  6.选择“确定”以备份数据库。

1.3 Xshell登录服务器,再用Xftp上传备份文件到linux

登录服务器:

 

创建新的备份目录。 如果目录已存在,-p 参数不会执行任何操作。

mkdir -p /var/opt/mssql/backup

 

上传备份文件:

 

1.4 在 Linux 上还原数据库

要还原数据库备份,可以使用 RESTORE DATABASE Transact-SQL (TQL) 命令。

备注:

下列步骤使用 sqlcmd 工具。 如果尚未安装 SQL Server 工具,请按照以下步骤安装:

  • (1)用命令连接到微软官方下载配置文件
    命令:
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/7/prod.repo
  • (2)如果带有旧版本的mssql 工具,删除旧的unixODBC包,若没有直接到第三步
    命令:
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
  • (3)安装下载的配置文件中新版本的mssql-tools和unixODBC开发人员包
    命令:
sudo yum install -y mssql-tools unixODBC-devel

   (4)配置命令路径

vim /etc/profile.d/mssqltools.sh

输入内容:

export PATH=$PATH:/opt/mssql-tools/bin/

然后 source一下

source /etc/profile.d/mssqltools.sh

 

还原数据库:

1.在同一终端中,启动 sqlcmd。 下面的示例以 SA 用户身份连接到本地 SQL Server。 出现提示时输入密码,或使用 -P 参数指定密码。

sqlcmd -S localhost -U SA

2.在 >1 提示符下,输入以下 RESTORE DATABASE 命令,并在每行后按 Enter(无法同时复制和粘贴整个多行命令)。 将出现的所有 YourDB 替换为数据库的名称。

RESTORE DATABASE YourDB
FROM DISK = '/var/opt/mssql/backup/YourDB.bak'
WITH MOVE 'YourDB' TO '/var/opt/mssql/data/YourDB.mdf',
MOVE 'YourDB_Log' TO '/var/opt/mssql/data/YourDB_Log.ldf'
GO

应收到已成功还原数据库的消息。

备注:如果想重新备份,那么需要离线数据库,然后删除对应文件,最后重新跑RESTORE DATABASE 命令即可

/*使数据库离线*/

ALTER DATABASE [数据库名] SET OFFLINE WITH ROLLBACK IMMEDIATE

/*删除对应文件*/

 

rm -rf /var/opt/mssql/data/YourDB.mdf

rm -rf /var/opt/mssql/data/YourDB_Log.ldf

3.通过列出服务器上的所有数据库来验证还原。 应该会列出已还原的数据库。

SELECT Name FROM sys.Databases
GO

4.在已迁移的数据库上运行其他查询。 以下命令将上下文切换到 YourDB 数据库,并从其一个表中选择行。

USE YourDB
SELECT * FROM YourTable
GO

 

posted @   狂热搬砖家  阅读(456)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示