最終更新 9 months ago

這是一個 Docker Compose 配置檔,用於設定 Microsoft SQL Server 環境,包括一個 mssql-server 容器(SQL Server Express 版本)和一個 sqlcmd 容器(用於執行 SQL 命令)。兩個容器透過自定義網路連接,並將資料庫數據保存到命名卷 mssql_data。

docker-compose.yml Raw
1services:
2 mssql-server:
3 image: mcr.microsoft.com/mssql/server:2019-latest
4 container_name: mssql-server
5 environment:
6 ACCEPT_EULA: "Y"
7 SA_PASSWORD: "StrongP@ssw0rd!"
8 MSSQL_PID: "Express"
9 ports:
10 - "1433:1433"
11 volumes:
12 - mssql_data:/var/opt/mssql
13 networks:
14 - mssql-network
15 restart: unless-stopped
16
17 sqlcmd:
18 image: mcr.microsoft.com/mssql-tools
19 container_name: sqlcmd
20 depends_on:
21 - mssql-server
22 networks:
23 - mssql-network
24 entrypoint: /opt/mssql-tools/bin/sqlcmd
25 command: -S mssql-server -U sa -P 'StrongP@ssw0rd!' -Q 'SELECT @@VERSION'
26
27volumes:
28 mssql_data:
29
30networks:
31 mssql-network:
32
33
docker_compose_run.sh Raw
1#!/bin/bash
2
3# 使用 docker-compose 啟動所有服務,並在任一容器退出時中止
4docker-compose up --abort-on-container-exit
5
6# 啟動 mssql-server 服務
7docker-compose up mssql-server
8
9# 在後台啟動 mssql-server 服務
10docker-compose up -d mssql-server
11
12# 執行 sqlcmd 工具來連接到 mssql-server
13docker-compose run sqlcmd
14
15# 使用 sqlcmd 執行查詢,獲取 SQL Server 版本資訊
16docker-compose run sqlcmd -S mssql-server -U sa -P StrongP@ssw0rd! -Q "SELECT @@VERSION"
17
18# 使用 sqlcmd 工具連接到 mssql-server,添加一個鏈接伺服器
19docker-compose run sqlcmd -S mssql-server -U sa -P StrongP@ssw0rd! -Q "
20EXEC sp_addlinkedserver
21 @server='MyLinkedServer',
22 @srvproduct='',
23 @provider='SQLNCLI',
24 @datasrc='192.168.1.100',
25 @catalog='TargetDB';
26
27EXEC sp_addlinkedsrvlogin
28 @rmtsrvname='MyLinkedServer',
29 @useself='false',
30 @rmtuser='remote_user',
31 @rmtpassword='remote_password';
32"
33
34# 使用 sqlcmd 工具連接到 mssql-server,查詢所有已鏈接的伺服器
35docker-compose run sqlcmd -S mssql-server -U sa -P StrongP@ssw0rd! -Q "EXEC sp_linkedservers"
36
37# 使用 sqlcmd 工具連接到 mssql-server,查詢特定鏈接伺服器的詳細資訊
38docker-compose run sqlcmd -S mssql-server -U sa -P StrongP@ssw0rd! -Q "
39SELECT * FROM sys.servers WHERE name = 'MyLinkedServer';
40"
41