使用Docker运行SQL Server
現(xiàn)在.net core已經(jīng)跨平臺了,大家也都用上了linux用上了docker。跟.net經(jīng)常配套使用的SQL SERVER以前一直是windows only,但是從SQL Server 2017開始已經(jīng)支持運行在docker上,也就說現(xiàn)在SQL Serer已經(jīng)可以運行在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 run 命令啟動容器,其中要注意的是使用-v參數(shù)指定了sqlserver2019_data目錄掛載到容器的/var/opt/mssql目錄,這個目錄是用來存儲數(shù)據(jù)庫文件的,所以最好掛載到外容器外部,避免因為不小心刪除容器而丟失數(shù)據(jù)
使用docker ps 命令查看容器運行情況,可以看到sqlserver2019正在運行
使用命令行連接SQL Server
sudo docker exec -it sqlserver2019 "bash"使用docker exec命令登錄到容器內(nèi)部執(zhí)行命令
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "dev@123,"在容器內(nèi)部執(zhí)行命令,打開sqlcmd打開sqlcmd之后我們就可以進(jìn)行一些數(shù)據(jù)庫的操作了,比如創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,查詢數(shù)據(jù)等。
CREATE DATABASE TEST_DB GO USE TEST_DB GO CREATE TABLE Table1 (ID INT, NAME NVARCHAR(50)) GO Insert Into Table1 Values (0, 'agile')創(chuàng)建TEST_DB數(shù)據(jù)庫;創(chuàng)建表Table1;插入一行數(shù)據(jù);查詢表數(shù)據(jù)我們使用docker運行的SQL Server同樣可以使用Sql Server Management Studio來管理。
使用服務(wù)器ip加端口連接成功后,可以看到剛才新建的數(shù)據(jù)庫TEST_DB跟表TABLE1還有里面的數(shù)據(jù)都在。能使用SSMS管理后就簡單多了跟使用SQL Server其他版本沒啥區(qū)別。
還原數(shù)據(jù)庫
上面演示了如何在Docker環(huán)境下安裝SQL Server,下面我們來演示下如何還原一個數(shù)據(jù)庫備份文件到數(shù)據(jù)庫實例上。
使用winscp上傳bak文件到linux服務(wù)器
上一回我們啟動docker容器的時候使用了-v參數(shù)掛載了本地目錄/hd2/sqlserver2019data到容器內(nèi)目錄/var/opt/mssql,所以我們只需要把文件testdb.bak上傳到/hd2/sqlserver2019data目錄,docker容器即可訪問。
我使用了下Sql Server Management Studio的還原功能試了下,沒有成功,不知是不是SSMS版本的問題。既然SSMS不能還原,那就使用命令行來試試吧。
使用docker exec命令在容器內(nèi)執(zhí)行命令
因為SQL Server安裝在Docker容器內(nèi),所以執(zhí)行命令行都需要進(jìn)入到容器內(nèi)。
sudo docker exec -it sqlserver2019 /bin/bash接下來的命令全部在sqlserver2019容器內(nèi)執(zhí)行。
使用RESTORE FILELISTONLY命令列出備份數(shù)據(jù)文件的邏輯名
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -Q 'RESTORE FILELISTONLY FROM DISK = "/var/opt/mssql/testdb.bak"' | tr -s ' ' | cut -d ' ' -f 1-2使用該命令可以把數(shù)據(jù)庫的數(shù)據(jù)文件,日志文件名稱顯示出來。在接下來的恢復(fù)操作中有用。
使用RESTORE DATABASE命令還原數(shù)據(jù)庫
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'dev@123,' -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"'
看到RESTORE DATABASE successfully的時候表示數(shù)據(jù)庫還原成功了。讓我們使用SSMS看看數(shù)據(jù)庫是否真的還原成功了。
可以看到數(shù)據(jù)庫已經(jīng)還原上去,里面的表,數(shù)據(jù)都可以正常操作。至此,數(shù)據(jù)庫文件還原成功。
至此SQL Server in Docker的基本操作演示的差不多了,還有更多的高級功能比如配置故障轉(zhuǎn)移集群,復(fù)制訂閱,Always On等功能跟windows環(huán)境配置還有點區(qū)別大家可以自己嘗試一下。
總結(jié)
以上是生活随笔為你收集整理的使用Docker运行SQL Server的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LINQ :最终统治了所有的语言!
- 下一篇: 不懂数据库索引原理?因为你心里没有一点B