windows
安裝sqlserver服務
-
SQL Server 下載 | Microsoft
-
或者MSDN, 我告訴你 - 做一個安靜的工具站 (itellyou.cn)
-
安裝
-
關閉windows防火牆並重新執行
-
一路下一步直到
這樣設定可以讓安裝該服務的使用者直接
安裝管理工具
docker
2022安裝
Docker:為 Linux 上的 SQL Server 安裝容器 - SQL Server | Microsoft Learn
-
拉取映象
docker pull mcr.microsoft.com/mssql/server:2022-latest
-
製作容器
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=WJJ18340.wjj" \ -p 1433:1433 --name sql1 --hostname sql1 \ -d \ mcr.microsoft.com/mssql/server:2022-latest #密碼,要求是最少8位的強密碼,要有大寫字母,小寫字母,數字以及特殊符號,不然會有一個大坑(Docker啟動Sql Server容器後過幾秒就停止了)。
-
設定 Docker 主機防火牆規則
預設情況下,Docker 帶有一個內建的防火牆,需要開放 1433 埠才能讓外部訪問 SQL Server。使用以下命令開放 Docker 主機的 1433 埠:
sudo ufw allow 1433/tcp
重啟防火牆,注意重啟防火牆之後才會生效。
sudo ufw reload
-
伺服器防火牆配置1433的開放埠
-
配置容器內部的 SQL Server
進入容器
docker exec -it 6239153a3f7f /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'WJJ18340.wjj'
配置遠端連線
在 SQL Server 命令列介面中,執行以下命令來配置遠端連線:-- 允許遠端連線 EXEC sp_configure 'remote access', 1 GO RECONFIGURE GO -- 允許遠端 DAC 連線 EXEC sp_configure 'remote admin connections', 1 GO RECONFIGURE GO -- 重啟 SQL Server 使配置生效 SHUTDOWN GO
這些命令將啟用 SQL Server 的遠端連線功能,並允許遠端 DAC 連線。最後,需要重啟 SQL Server 使配置生效。
測試連線,注意可以不填寫埠,指定埠需要用逗號隔開而不是分號
伺服器記憶體小於2G的情況我們使用docker run之後會發現容器根本跑不起來,使用docker logs
sqlservr: This program requires a machine with at least 2000 megabytes of memory.
也就是可用記憶體沒有2g所以報錯,啟動不了。
- 破解思路:把記憶體限制被修改為 512m在啟動即可
正常情況下我們可以進入docker內部去修改檔案,但是這裡由於啟動不了docker容器,所以也就進不去,我們可以把docker內部的檔案複製到宿主機,修改後在複製回去宿主機即可。 - 把docker內部的檔案複製到宿主機:
語法:docker cp [容器id]:docker容器中配置檔案路徑 主機路徑 - 例項:docker cp [容器id]:/opt/mssql/bin/sqlservr "/home/sqlservr" 這樣就可以把docker內部的sqlservr檔案複製出來到home資料夾下了
docker cp cd6b86630:/opt/mssql/bin/sqlservr "/home/sqlservr"
-
然後修改從docker內部複製出來的檔案
先使用mv命令改一下檔名,後面修改後原始檔案就還在相當於備份一下檔案:mv sqlservr sqlservr.old
使用python修改記憶體限制程式碼(注意這裡貌似只能使用python2,使用python3好像有點問題,centos7.6自帶python2.7)oldfile = open("sqlservr.old", "rb").read() newfile = oldfile.replace("\x00\x94\x35\x77", "\x00\x80\x84\x1e") open("sqlservr", "wb").write(newfile) exit()
改完後就變成兩個檔案了一個新的一箇舊的,一個修改後的一個修改前的
複製到docker之前修改一下檔案許可權
命令:chmod 777 sqlservr
不然直接複製進去在啟動容器可能會報許可權相關的錯
把修改後的檔案複製到docker內部
語法:docker cp 主機檔案路徑 容器id:docker容器中配置檔案路徑
例項:docker cp /home/sqlservr 容器id:/opt/mssql/bin/sqlservr 這樣就可以把剛剛修改記憶體限制的檔案重新複製進去了
docker cp /home/sqlservr cd6b8663:/opt/mssql/bin/sqlservr
安裝多個版本python
下載python其他版本
sudo apt install python2
使用update-alternatives --install建立連結
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2
# 後面還有一個數字,分別是1和2,代表了優先順序,數字越大優先順序越高
選擇要執行的版本
sudo update-alternatives --config python
2008安裝
- 拉取2008映象
docker pull exoplatform/sqlserver
- 啟動2008映象
docker run --name sqlserver2008 --restart always -v /home/mssql2008:/var/opt/mssql -d -e 'ACCEPT_EULA=Y' -e SA_PASSWORD='WJJ18340.wjj' -e SQLSERVER_DATABASE=demo -e SQLSERVER_USER=jige -e SQLSERVER_PASSWORD='WJJ18340.wjj' -p 2008:1433 exoplatform/sqlserver
1
-e SQLSERVER_DATABASE=demo:建立一個叫 demo 的資料庫
-e SQLSERVER_USER=jige :demo資料庫新增了一個使用者叫 jige
-e SQLSERVER_PASSWORD='qwer!@#123':設定雞哥使用者的密碼
-
進入容器
docker exec -it 1b3c3393b043 /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'WJJ18340.wjj'