一、前言
1、可以直接參考微軟官方文檔 快速入門:使用 Docker 運行 SQL Server Linux 容器映像,這里主要是說一些注意點和坑
二、安裝
1、拉取鏡像
docker pull mcr.microsoft.com/mssql/server:2022-latest
2、創建掛載目錄,這里只是比官方多了一個數據的掛載目錄
# 先創建掛載數據目錄
mkdir -p /data/docker/sqlserver/data
chmod -R 777 /data/docker/sqlserver/data
3、構建鏡像
注意這里的密碼需要復雜一下,官方有要求的
docker run --restart=always \-v /data/docker/sqlserver/data:/var/opt/mssql \-e 'ACCEPT_EULA=Y' \-e "MSSQL_SA_PASSWORD=lP7887h1234578P783bX*" \-p 1433:1433 \-e TZ=Asia/Shanghai \--name sqlserver1 \--hostname sqlserver1 \-d mcr.microsoft.com/mssql/server:2022-latest
4、測試是否成功,其中的 -C 是為了解決安全連接時的問題(或者換成 -No),可以參考 Docker 安裝sql server 登陸失敗,其中使用 -C
或者 -No
都可以,其中賬號 sa
,密碼 lP7887h1234578P783bX*
# 進入容器里面
docker exec -it sqlserver1 "bash"# 再登錄sqlserver
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "lP7887h1234578P783bX*" -C
# /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "lP7887h1234578P783bX*" -No# 查詢已經存在的數據庫、
SELECT name AS DatabaseName FROM sys.databases;
go# 查詢數據庫版本
select @@version
go
2.1、版本說明
1、sqlserver 的企業版本是收費的,目前有如下幾種版本 SQL Server 版本以及各個版本的區別
2、那我們在部署的時候,默認是什么版本呢,在微軟的docker的sqlserver中已經說明了 https://hub.docker.com/r/microsoft/mssql-server,有一個參數MSSQL_PID
,默認是開發版本,沒有指定的話
3、所以,如果我們想使用 Express
版本,只需要增加參數 -e "MSSQL_PID=Express"
docker run --restart=always \-v /data/docker/sqlserver/data:/var/opt/mssql \-e 'ACCEPT_EULA=Y' \-e "MSSQL_SA_PASSWORD=lP7887h1234578P783bX*" \-p 1433:1433 \-e TZ=Asia/Shanghai \-e "MSSQL_PID=Express" \--name sqlserver1 \--hostname sqlserver1 \-d mcr.microsoft.com/mssql/server:2022-latest
2.2、確定所運行的 SQL Server 數據庫引擎的版本
1、官方也給了文檔 確定所運行的 SQL Server 數據庫引擎的版本
2、比較方便的,大致為兩者,也可以看出,默認沒指定版本就是 Developer
版本
- 第一種
SELECT @@VERSION
- 第二種
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
3、Express 版本如下
三、工具連接
3.1、navicat
1、如下配置
2、如果你直接連接肯定回報錯,連接不上,我這里是 nacicat16,參考 Navicat Premium 16 連接SQL Server 報錯:[M002][Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱并且未指定默認驅動程序(0),其實主要是本地沒有連接器,安裝一下 Navica t根目錄下的 msodbcsql_64.msi就可以了,老版本叫 sqlncli_x64.msi
3、這里要注意一下,還需要考慮 navicat的版本和sqlserver的版本,如果你的navicat版本太低了,而sqlserver版本很高,比如我之前用的是navicat12的版本連接sqlserver2022的版本,執行 sqlncli_x64.msi 也是沒有效果的,因為版本差異太大了
3.2、dbeaver
1、如果一時找不到Navica合適的,可以直接用 dbeaver,我試過,下載最新的可以直接連接上去,回會提示你下載驅動,你點擊下載就好