日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

迁移数据库到SQL on Linux Docker

發布時間:2023/12/4 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迁移数据库到SQL on Linux Docker 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題引入

前一篇文章,菜鳥找到了SQL on Linux Docker容器銷毀后,容器中的數據庫文件可以得以保留的方法,老鳥非常開心。所以,今天又提出了新的問題:“鳥兒,如果我想把我的數據庫從SQL on Windows遷移到SQL on Linux Docker,如何才能做到呢?”。
菜鳥一聽這個問題,頭腦迅速反應出數據庫遷移的兩種方法:備份還原和分離附加。就讓我們來試試吧。詳細的過程可以參見我錄制的Youku視頻:http://v.youku.com/v_show/id_XMjUwNzQyNTU4OA==.html

構建SQL on Windows測試數據庫

為了測試從SQL on Windows遷移數據庫到SQL on Linux Docker的兩種方法:備份還原和數據庫附加。我們在SQL on Windows數據庫實例中創建兩個測試數據庫,TestAttach和TestBackRestore,然后分別在兩個數據庫下創建一張測試表,接下來插入兩條NEWID測試數據,最后查看這兩條數據。

IF DB_ID('TestAttach') IS NULL ? ?CREATE DATABASE TestAttach; GOUSE TestAttachGOIF OBJECT_ID('dbo.tb_Test', 'U') IS NOT NULLDROP TABLE dbo.tb_TestGOCREATE TABLE dbo.tb_Test(RowID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,Name VARCHAR(36) NOT NULL);INSERT INTO dbo.tb_TestSELECT NEWID() UNION ALL SELECT NEWID();SELECT * FROM dbo.tb_Test;IF DB_ID('TestBackRestore') IS NULL ? ?CREATE DATABASE TestBackRestore; GOUSE TestBackRestoreGOIF OBJECT_ID('dbo.tb_Test', 'U') IS NOT NULLDROP TABLE dbo.tb_TestGOCREATE TABLE dbo.tb_Test(RowID INT IDENTITY(1, 1) NOT NULL PRIMARY KEY,Name VARCHAR(36) NOT NULL);INSERT INTO dbo.tb_TestSELECT NEWID() UNION ALL SELECT NEWID();SELECT * FROM dbo.tb_Test;SELECT physical_name,* FROM sys.master_filesWHERE database_id = DB_ID('TestAttach');

執行結果截圖如下:

為了可以直接復制mdf和ldf文件,我們需要下線數據庫TestAttach,然后備份數據庫TestBackRestore。

USE masterGOALTER DATABASE TestAttach SET OFFLINE;USE masterGOEXEC xp_create_subdir 'C:\temp\' GO BACKUP DATABASE [TestBackRestore] ? ?TO DISK = 'C:\temp\TestBackRestore_full_20170210.bak' WITH STATS = 2 ;

傳輸數據庫文件

由于我是在Mac系統安裝Windows虛擬機來測試的,所以,首先我需要將Windows虛擬機中的文件復制到Mac系統。比如:我將下面三個文件復制到Mac的~/Downloads目錄:

C:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA\TestAttach.mdf C:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA\TestAttach_log.ldf C:\temp\TestBackRestore_full_20170210.bak

接下來,我需要在Mac系統中,將這三個文件復制到SQL on Linux Docker容器中,方法如下:

docker cp ~/Downloads/TestAttach.mdf linuxsql41433:/var/opt/mssql/data/TestAttach.mdf docker cp ~/Downloads/TestAttach_log.ldf linuxsql41433:/var/opt/mssql/data/TestAttach_log.ldf docker cp ~/Downloads/TestBackRestore_full_20170210.bak linuxsql41433:/var/opt/mssql/data/TestBackRestore_full_20170210.bak

備份文件、數據庫數據文件和日志文件準備完畢后,接下來該是還原數據庫和附加數據庫了。

還原數據庫到SQL on Linux Docker

這個和SQL on Windows還原操作沒有什么兩樣,思路還是先檢查備份文件的完整性,然后使用Restore語句還原數據庫。使用SSMS連接到SQL on Linux Docker中,執行以下腳本:

USE masterGO--Verify backup fileRESTORE 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 DatabaseUSE masterGORESTORE 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=2GO

最后是附加數據庫到SQL on Linux Docker的操作。

附加數據庫到SQL on Linux Docker

附加數據庫方法也和SQL on Windows一樣,使用Create Database for Attach方法。同樣,使用SSMS連接到SQL on Linux Docker,執行以下數據庫附加操作腳本:

USE masterGO-- Create database via attachCREATE 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版數據庫可以任意選擇的前提。我們可以使用數據庫的備份還原和分離附件兩種方法來達到數據庫遷移的目的。

相關文章:?

  • SQL Server 急救包(First Responder Kit)入門教程

  • SQL Server on Linux 理由淺析

  • SQLServer On Linux Package List on CentOS

  • SQL Server on Linux的文件和目錄結構

  • 個性化配置你的SQL Server on Linux

  • SQL on Linux Run on Docker

  • 如何使Mac Docker支持SQL on Linux容器Volume特性

原文地址:https://yq.aliyun.com/articles/69550


.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的迁移数据库到SQL on Linux Docker的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。