天天看點

docker使用_使用Docker運作SQL Server還原資料庫

現在.net core已經跨平台了,大家也都用上了linux用上了docker。跟.net經常配套使用的SQL SERVER以前一直是windows only,但是從SQL Server 2017開始已經支援運作在docker上,也就說現在SQL Serer已經可以運作在linux下了。

下面在Ubuntu 16.4上示範安裝并使用SQL Server 2019-CTP3.2

SQL Server in Docker

sudo docker pull mcr.microsoft.com/mssql/server:2019-CTP3.2-ubuntu

使用docker pull指令從docker hub拉取sqlserver 2019-ctp3.2的鏡像

docker使用_使用Docker運作SQL Server還原資料庫

sudo mkdir /hd2/sqlserver2019_data

sudo docker run -e "ACCEPT_EULA=Y" -e "[email protected]," -p 14330:1433 --name sqlserver2019 -v /hd2/sqlserver2019_data:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2019-CTP3.2-ubuntu

使用docker run 指令啟動容器,其中要注意的是使用-v參數指定了sqlserver2019_data目錄挂載到容器的/var/opt/mssql目錄,這個目錄是用來存儲資料庫檔案的,是以最好挂載到外容器外部,避免因為不小心删除容器而丢失資料

docker使用_使用Docker運作SQL Server還原資料庫

sudo docker ps -a

使用docker ps 指令檢視容器運作情況,可以看到sqlserver2019正在運作

docker使用_使用Docker運作SQL Server還原資料庫

使用指令行連接配接SQL Server

sudo docker exec -it sqlserver2019 "bash"

使用docker exec指令登入到容器内部執行指令

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "[email protected],"

在容器内部執行指令,打開sqlcmd打開sqlcmd之後我們就可以進行一些資料庫的操作了,比如建立資料庫,建立表,查詢資料等。

CREATE DATABASE TEST_DB

GO

USE TEST_DB

GO

CREATE TABLE Table1 (ID INT, NAME NVARCHAR(50))

GO

Insert Into Table1 Values (0, 'agile')

建立TEST_DB資料庫;建立表Table1;插入一行資料;查詢表資料

docker使用_使用Docker運作SQL Server還原資料庫

我們使用docker運作的SQL Server同樣可以使用Sql Server Management Studio來管理。

docker使用_使用Docker運作SQL Server還原資料庫

使用伺服器ip加端口連接配接成功後,可以看到剛才建立的資料庫TEST_DB跟表TABLE1還有裡面的資料都在。能使用SSMS管理後就簡單多了跟使用SQL Server其他版本沒啥差別。

還原資料庫

上面示範了如何在Docker環境下安裝SQL Server,下面我們來示範下如何還原一個資料庫備份檔案到資料庫執行個體上。

使用winscp上傳bak檔案到linux伺服器

上一回我們啟動docker容器的時候使用了-v參數挂載了本地目錄/hd2/sqlserver2019data到容器内目錄/var/opt/mssql,是以我們隻需要把檔案testdb.bak上傳到/hd2/sqlserver2019data目錄,docker容器即可通路。

docker使用_使用Docker運作SQL Server還原資料庫

我使用了下Sql Server Management Studio的還原功能試了下,沒有成功,不知是不是SSMS版本的問題。既然SSMS不能還原,那就使用指令行來試試吧。

使用docker exec指令在容器内執行指令

因為SQL Server安裝在Docker容器内,是以執行指令行都需要進入到容器内。

sudo docker exec -it sqlserver2019 /bin/bash

docker使用_使用Docker運作SQL Server還原資料庫

接下來的指令全部在sqlserver2019容器内執行。

使用RESTORE FILELISTONLY指令列出備份資料檔案的邏輯名

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '[email protected],' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/testdb.bak"' | tr -s ' ' | cut -d ' ' -f 1-2

docker使用_使用Docker運作SQL Server還原資料庫

使用該指令可以把資料庫的資料檔案,日志檔案名稱顯示出來。在接下來的恢複操作中有用。

使用RESTORE DATABASE指令還原資料庫

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '[email protected],' -Q 'RESTORE DATABASE testdb FROM DISK = "/var/opt/mssql/testdb.bak" WITH MOVE "testdb" TO "/var/opt/mssql/data/testdb.mdf" , MOVE "testdb_log" TO "/var/opt/mssql/data/testdb.ldf"'

docker使用_使用Docker運作SQL Server還原資料庫
docker使用_使用Docker運作SQL Server還原資料庫

看到RESTORE DATABASE successfully的時候表示資料庫還原成功了。讓我們使用SSMS看看資料庫是否真的還原成功了。

docker使用_使用Docker運作SQL Server還原資料庫

可以看到資料庫已經還原上去,裡面的表,資料都可以正常操作。至此,資料庫檔案還原成功。

至此SQL Server in Docker的基本操作示範的差不多了,還有更多的進階功能比如配置故障轉移叢集,複制訂閱,Always On等功能跟windows環境配置還有點差別大家可以自己嘗試一下。

繼續閱讀