SQL Server in Docker 還原資料庫 上一會演示瞭如果在Docker環境下安裝SQL Server,這次我們來演示下如何還原一個資料庫備份文件到資料庫實例上。 使用winscp上傳bak文件到linux伺服器 上一回我們啟動docker容器的時候使用了 v參數掛賬了本地目錄/hd2/ ...
SQL Server in Docker 還原資料庫
上一會演示瞭如果在Docker環境下安裝SQL Server,這次我們來演示下如何還原一個資料庫備份文件到資料庫實例上。
使用winscp上傳bak文件到linux伺服器
上一回我們啟動docker容器的時候使用了-v參數掛賬了本地目錄/hd2/sqlserver2019_data到容器內目錄/var/opt/mssql,所以我們只需要把文件testdb.bak上傳到/hd2/sqlserver2019_data目錄,docker容器即可訪問。
我使用了下Sql Server Management Studio的還原功能試了下,沒有成功,不知是不是SSMS版本的問題。既然SSMS不能還原,那就使用命令行來試試吧。
使用docker exec命令在容器內執行命令
因為SQL Server安裝在Docker容器內,所以執行命令行都需要進入到容器內。
sudo docker exec -it sqlserver2019 /bin/bash
接下來的命令全部在sqlserver2019容器內執行。
使用RESTORE FILELISTONLY命令列出備份數據文件的邏輯名
/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
使用該命令可以把資料庫的數據文件,日誌文件名稱顯示出來。在接下來的恢復操作中有用。
使用RESTORE DATABASE命令還原資料庫
/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的時候表示資料庫還原成功了。讓我們使用SSMS看看資料庫是否真的還原成功了。
可以看到資料庫已經還原上去,裡面的表,數據都可以正常操作。至此,資料庫文件還原成功。