Trong bài viết này, bạn sẽ sử dụng Docker để pull và run image chứa SQL Server 2019 (15.x) Linux. Sau đó, bạn có thể kết nối với sqlcmd để tạo cơ sở dữ liệu và thực hiện các truy vấn.
Các lệnh trong bài viết này được thực hiện trong môi trường PowerShell chạy trong Windows.
Một số điểm mà bạn cần lưu ý:
- User quản trị mặc định: sa.
- Password được thiết lập bằng biến môi trường SA_PASSWORD (Đặt password phải mệnh, từ 8 ký tự, gồm số, chữ).
- Thiết lập biến môi trường ACCEPT_EULA=Y
- Port mặc định là 1433. Chúng ta sẽ đổi sang port 1431
Pull và run container SQL Server
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1431:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2019-latest
Lưu ý:- Port SQL Server là 1431
- Tên container là sql1
- -d: Chạy container ở chế độ background (daemon).
- mcr.microsoft.com/mssql/server:2019-latest: tên SQL Server Linux container image.
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourStrong@Passw0rd>" `
-Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
Trường hợp bạn muốn chạy một câu lệnh duy nhất (không cần pull rồi chạy container);
docker run -e 'ACCEPT_EULA=Y' -e "SA_PASSWORD=YourPass@123!" -p 1431:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-latest
Sử dụng SQLCOMMAND trong container
SQLCMD là một công cụ đi kèm với SQL Server cho phép ta thực thi câu truy vấn SQL, hay thực thi một Stored Procedure, hay chạy một file SQL Script từ dòng lệnh giống như ứng dụng CMD.
Để viết nhiều câu lệnh query liên tiếp, bạn bật bash session:
docker exec -it sqlserver "bash"
Hoặc Shell
docker exec -it sqlserver /bin/sh
Tạo đối tượng SQLCMD để thực thi SQL query:
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<Your_Password>'
1>
Giả sử bạn cần tạo database TestDB. Đầu tiên bạn thự hiện việc đăng nhập, gõ query, và kết thúc bằng lệnh GO
PS C:\WINDOWS\system32> docker exec -it sql1 "bash"
mssql@sql1:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<Your_Password>"
1> CREATE DATABASE TestDB;
2> SELECT Name from sys.databases;
3> GO
Name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
TestDB
(5 rows affected)
1>
Trường hợp bạn muốn Insert và Query data:
1> USE TestDB;
2> CREATE TABLE People(Id INT, Name NVARCHAR(200));
3> INSERT INTO People VALUES(1, 'Abraham Lincoln')
4> GO
Changed database context to 'TestDB'.
(1 rows affected)
1> SELECT * FROM People
2> GO
Id Name
----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1 Abraham Lincoln
(1 rows affected)
1>
Để thoát khỏi bash và SQLCMD, bạn gõ lệnh exit 2 lần:
1> exit
mssql@sql1:/$
docker stop sql1
docker rm sql1
Sử dụng Azure Data Studio
Server: localhost,1431User: saPass: <Your password>
Tham khảo
https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
https://khalidabuhakmeh.com/running-sql-server-queries-in-docker
Chúc các bạn thành công
P/s: Trong bài viết tới, mình sẽ hướng dẫn các bạn tạo file Docker compose để đơn giản hóa việc setup container
Nhận xét
Đăng nhận xét