这个和 SQL on Windows 还原操作没有什么两样,思路还是先检查备份文件的完整性,然后使用 Restore 语句还原数据库。使用 SSMS 连接到 SQL on Linux Docker 中,执行以下脚本:
- USE master
- GO
- --Verify backup file
- RESTORE FILELISTONLY
- FROM DISK = N'C:\var\opt\mssql\data\TestBackRestore_full_20170210.bak';
- RESTORE VERIFYONLY
- FROM DISK = N'C:\var\opt\mssql\data\TestBackRestore_full_20170210.bak';
- -- Restore Database
- USE master
- GO
- RESTORE DATABASE [TestBackRestore]
- FROM DISK = N'C:\var\opt\mssql\data\TestBackRestore_full_20170210.bak'
- WITH MOVE N'TestBackRestore' TO N'C:\var\opt\mssql\data\TestBackRestore.mdf'
- ,MOVE N'TestBackRestore_log' TO N'C:\var\opt\mssql\data\TestBackRestore_log.ldf'
- ,STATS=2
- GO
最后是附加数据库到 SQL on Linux Docker 的操作。
附加数据库方法也和 SQL on Windows 一样,使用 Create Database for Attach 方法。同样,使用 SSMS 连接到 SQL on Linux Docker,执行以下数据库附加操作脚本:
- USE master
- GO
- -- Create database via attach
- CREATE DATABASE [TestAttach]
- ON ( FILENAME = N'C:\var\opt\mssql\data\TestAttach.mdf'),
- ( FILENAME = N'C:\var\opt\mssql\data\TestAttach_log.ldf')
- FOR ATTACH;
- GO
最后确认操作,只需要检查下这两个数据库下的测试表数据是否和迁移之前一致即可。
- SELECT * FROM TestAttach.dbo.tb_Test;
- SELECT * FROM TestBackRestore.dbo.tb_Test;
对比迁移前后数据库测试表中的数据是否一致:
从最后的确认结果来看,迁移前后的数据库测试数据完全一致,本次迁移数据使用的两种方法都是成功的,可靠的。
SQL on Windows 上的数据库,可以非常平滑的迁移到 SQL on Linux Docker 中来,这个是 Windows 版和 Linux 版数据库可以任意选择的前提。我们可以使用数据库的备份还原和分离附件两种方法来达到数据库迁移的目的。
来源: https://yq.aliyun.com/articles/69550