Tuần trước chúng ta đã có thể gặp nhau phiên bản xem trước của SQL Server dành cho Gnu / Linux, một phiên bản mặc dù đang trong quá trình thử nghiệm có thể được cài đặt trên bất kỳ máy tính Linux nào. Phiên bản này được chuẩn bị sẵn để nó rất dễ cài đặt trong Ubuntu nhưng nó có thể được cài đặt trong bất kỳ bản phân phối nào khác như Fedora.
Trong hướng dẫn nhỏ này Chúng tôi cho bạn biết cách thực hiện đơn giản và nhanh chóng không có kiến thức sâu rộng về cơ sở dữ liệu nhưng để có thể làm việc đúng với nó, chúng ta phải biết một số điều về cơ sở dữ liệu.
Index
Cài đặt SQL Server
Như với nhiều chương trình gần đây, Không thể tìm thấy SQL Server trong kho lưu trữ Fedora, vì vậy trước tiên chúng ta phải kết hợp chúng vào kho lưu trữ bằng cách nhập nội dung sau vào một thiết bị đầu cuối:
sudo su - curl //packages.microsoft.com/config/rhel/7/mssql-server.repo & /etc/yum.repos.d/mssql-server.repo curl //packages.microsoft.com/config/rhel/7/prod.repo & /etc/yum.repos.d/msprod.repo exit
Khi chúng tôi đã thêm các kho này, bây giờ chúng tôi phải cài đặt cơ sở dữ liệu Microsoft trong bản phân phối và chúng tôi thực hiện như sau:
sudo dnf -y install mssql-server mssql-tools
Cấu hình máy chủ SQL trên Fedora
Sau đó, chúng tôi phải bắt đầu tập lệnh cấu hình, nhưng đối với điều này, trước tiên chúng tôi phải mở cổng mà SQL Server sẽ sử dụng, đối với điều này, chúng tôi viết như sau:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent sudo firewall-cmd --reload
Và sau đó, bây giờ chúng ta có thể bắt đầu cấu hình cơ sở dữ liệu:
sudo /opt/mssql/bin/sqlservr-setup
Bây giờ cho bắt đầu dịch vụ khi chúng tôi khởi động Fedora chúng tôi viết như sau:
sudo systemctl enable mssql-server mssql-server-telemetry
Và nếu chúng ta muốn khởi động dịch vụ SQL Server trong phiên chúng ta đang chạy, thì chúng ta phải làm như sau:
sudo systemctl start mssql-server mssql-server-telemetry
Và đây là tất cả những gì bạn phải làm để có SQL Server trong Fedora, tuy nhiên bạn phải nhớ rằng đó là bản Xem trước, nghĩa là nó không phải là một phiên bản cuối cùng, vì vậy bạn phải cẩn thận với công việc mà chúng tôi để phần mềm mới này thực hiện trong Gnu / Linux.
MS SQL Server là hệ quản trị CSDL của Microsft, nó là hệ quản trị CSDL mạnh được dùng rộng rãi, hiện nay nó có các phiên bản trên Windows và Linux. Microsft cũng cung cấp phiên bản Image để tạo ra các container Docker: mcr.microsoft.com/mssql/server:2017-latest.
Khi sử dụng Image
docker volume create vmssql4 lưu ý một số điểm:
- User quản trị mặc định MS SQLServer có tên là
docker volume create vmssql
5. - Password được thiết lập bằng biến môi trường
docker volume create vmssql
6 [Đặt password phải mệnh, từ 8 ký tự, gồm số, chữ]. - Yêu cầu hệ thống cần tối thiểu 2GB RAM, như vậy cần đảm bảo Docker có đủ RAM khi chạy MSSQL
- Khi chạy Docker trên macOS chưa hỗ trợ ánh xạ trực tiếp thư mục Host vào Container MSSQL [Windows, Linux bình thường] nhưng mount Volume thì hoạt động bình thường.
- Ngoài ra cũng cần thiết lập biến môi trường
docker volume create vmssql
7 - Cổng kết nối mặc định là
docker volume create vmssql
8
Cài đặt, chạy MS SQL Server
Để dữ liệu MSSQLServer không bị mất khi xóa Container cần tạo ra một ổ đĩa để ánh xạ vào container, ta tạo ổ đĩa đặt tên là
docker volume create vmssql9.
docker volume create device=path_in_host vmssql
Trên máy macOS có thể không gán ngay thư mục host vào được thì chỉ dùng
docker volume create vmssql
Giờ sẽ tạo/chạy container với thông số sau:
- Đặt password cho tài khoản
docker volume create vmssql
5 làdocker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
1 - Public xạ cổng
docker volume create vmssql
8 vào container - Ánh xạ ổ đĩa
docker volume create vmssql
9 vào thư mụcdocker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
4 [nơi lưu DB] - Đặt tên container là
docker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
5
docker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest
Như vậy đã có MS SQLServer đang chạy, kết nối đến nó qua cổng
docker volume create vmssql8.
Kết nối MS SQL Server
Nếu đang sử dụng Windows thì cài đặt và sử dụng công cụ SSMS [SQL Server Management Studio ] là công cụ tốt nhất để kết nối và quản lý SQL Server [Tải về SSMS].
Trong container
docker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest5 có sẵn công cụ
docker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest8 [/opt/mssql-tools/bin/sqlcmd] để có thể kết nối, tương tác với SQL SERVER ngay tại container.
Vào container đang chạy:
docker exec -it c-mssql bash
Tại đây nếu muốn đổi password của
docker volume create vmssql5 gõ:
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'oldpassword' \ -Q 'ALTER LOGIN SA WITH PASSWORD="newpassword"'
Thực hiện kết nối SQL Server
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Password789'
Nếu kết nối thành công, xuất hiện dấu nhắc
docker exec -it c-mssql bash0 để nhập và chạy các query [
docker exec -it c-mssql bash1], gõ các query xong để thi hành cần gõ
docker exec -it c-mssql bash2 ở dòng mới.
Ví dụ một vài Query
-- liệt kê các database: select name from master.dbo.sysdatabases -- chuyển database: use database_name -- chuyển database: use database_name
Azure Data Studio
Nếu muốn dùng một ứng dụng có giao diện trực quan để kết nối, quản lý, chạy các query tương tự như [SQL Server Management Studio] chạy được trên
docker exec -it c-mssql bash3,
docker exec -it c-mssql bash4,
docker exec -it c-mssql bash5 thì công cụ
docker exec -it c-mssql bash6 của MS là lựa chọn rất tốt, đây là phần mềm nguồn mở, các chức năng có thể bổ sung bằng các extension.
Tải về và cài đặt tại: Azure Data Studio.
Kết nối với MS SQL Server
Tương tác với SQL Server trực quan
docker-compose dịch vụ MSSQL và restore với sqlcmd
Có thể sử dụng
docker run -e 'ACCEPT_EULA=Y' --name c-mssql -e 'SA_PASSWORD=Password789' -p 1433:1433 -v vmssql:/var/opt/mssql -d mcr.microsoft.com/mssql/server:2017-latest8 để phục hồi CSDL từ một file backup. Giả sử có file backup tên là
docker exec -it c-mssql bash8 nó là bản backup CSDL. Để phục hồi nó, đầu tiên cần kiểm tra xem nó có những media nào lưu vào:
Kiểm tra file backup
/opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'Password123' \ -Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/xtlab.bak'"
Tùy cách backup mà có những thành phần khác nhau, ví dụ ở file trên
xtlab C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\xtlab.mdf D PRIMARY ... xtlab_log C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\xtlab_log.ldf L NULL ...
Nghĩa là bên trong nó có hai file, phần dữ liệu chính
docker exec -it c-mssql bash9 và phần log là
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'oldpassword' \ -Q 'ALTER LOGIN SA WITH PASSWORD="newpassword"'0
phục hồi backup
Với 2 file dữ liệu lưu trong backup như trên, tiến hành restore
docker exec -it c-mssql bash8 thành CSDL với
docker exec -it c-mssql bash9 như sau:
/opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'Password123' \ -Q 'RESTORE DATABASE xtlab FROM DISK = "/var/opt/mssql/backup/xtlab.bak" WITH MOVE "xtlab" TO "/var/opt/mssql/data/xtlab.mdf", MOVE "xtlab_log" TO "/var/opt/mssql/data/xtlab_log.ldf"'
Một ví dụ docker-compose và CSDL MS SQLServer để thực hành
Ở đây có một file backup CSDL xtlab.bak, nó là bản backup của một CSDL SQL Server, CSDL này có các bảng và dữ liệu đúng theo các ví dụ phần Học SQL. Hãy tải nó về lưu vào thư mục [hãy tạo ra thư mục
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'oldpassword' \ -Q 'ALTER LOGIN SA WITH PASSWORD="newpassword"'3] với đường dẫn
sudo docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \ -S localhost -U SA -P 'oldpassword' \ -Q 'ALTER LOGIN SA WITH PASSWORD="newpassword"'4