1. Giới thiệu.
Microsoft SQL Server (MSSQL) là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) do Microsoft phát triển. Nó được sử dụng để lưu trữ và quản lý dữ liệu trong các ứng dụng và hệ thống thông tin. SQL Server sử dụng ngôn ngữ truy vấn SQL (Structured Query Language) để tương tác với cơ sở dữ liệu và cung cấp nhiều tính năng như quản lý dữ liệu, bảo mật, sao lưu, khôi phục dữ liệu và nhiều tính năng mở rộng khác.
Từ phiên bản SQL Server 2017, Microsoft đã bắt đầu hỗ trợ triển khai SQL Server trên hệ điều hành Linux. Điều này có nghĩa là bạn có thể cài đặt và chạy SQL Server trên các phiên bản Linux như Ubuntu, Red Hat Enterprise Linux, SUSE Linux, và nhiều hệ điều hành Linux khác. Microsoft đã tiến hành việc chuyển giao phần mềm này để đảm bảo tính tương thích và hiệu suất tốt trên nền tảng Linux.
Với việc hỗ trợ trên Linux, SQL Server đã mở ra cơ hội cho người dùng và tổ chức sử dụng hệ thống quản lý cơ sở dữ liệu này trên các môi trường Linux, cùng với sự linh hoạt và lựa chọn trong việc triển khai ứng dụng của họ.
2. Cài đặt MSSQL.
Cập nhật khóa GPG.
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
Thêm khóa này vào hệ thống.
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)"
Cập nhật lại list repo.
sudo apt-get update
Cài đặt nó MSSQL bằng lệnh dưới.
sudo apt-get install -y mssql-server
Đầu ra sẽ như thế này.
$ sudo apt-get install -y mssql-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
gdb gdbserver libatomic1 libbabeltrace1 libc++1 libc++1-10 libc++abi1-10 libc6-dbg libcc1-0 libdw1 libsasl2-modules-gssapi-mit libsss-nss-idmap0
Suggested packages:
gdb-doc clang
The following NEW packages will be installed:
gdb gdbserver libatomic1 libbabeltrace1 libc++1 libc++1-10 libc++abi1-10 libc6-dbg libcc1-0 libdw1 libsasl2-modules-gssapi-mit libsss-nss-idmap0 mssql-server
0 upgraded, 13 newly installed, 0 to remove and 1 not upgraded.
Need to get 269 MB of archives.
After this operation, 1197 MB of additional disk space will be used.
Get:1 https://packages.microsoft.com/ubuntu/18.04/mssql-server-2019 bionic/main amd64 mssql-server amd64 15.0.4322.2-1 [245 MB]
Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libdw1 amd64 0.176-1.1build1 [226 kB]
Get:3 http://archive.ubuntu.com/ubuntu focal/main amd64 libbabeltrace1 amd64 1.5.8-1build1 [156 kB]
Get:4 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 gdb amd64 9.2-0ubuntu1~20.04.1 [3222 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 gdbserver amd64 9.2-0ubuntu1~20.04.1 [222 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libatomic1 amd64 10.5.0-1ubuntu1~20.04 [9284 B]
Get:7 http://archive.ubuntu.com/ubuntu focal/universe amd64 libc++abi1-10 amd64 1:10.0.0-4ubuntu1 [59.4 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal/universe amd64 libc++1-10 amd64 1:10.0.0-4ubuntu1 [193 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libcc1-0 amd64 10.5.0-1ubuntu1~20.04 [48.8 kB]
Get:10 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libsasl2-modules-gssapi-mit amd64 2.1.27+dfsg-2ubuntu0.1 [36.8 kB]
Get:11 http://archive.ubuntu.com/ubuntu focal/universe amd64 libc++1 amd64 1:10.0-50~exp1 [2904 B]
Get:12 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libc6-dbg amd64 2.31-0ubuntu9.9 [20.0 MB]
Get:13 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 libsss-nss-idmap0 amd64 2.2.3-3ubuntu0.12 [21.2 kB]
Fetched 269 MB in 23s (11.9 MB/s)
Preconfiguring packages ...
Selecting previously unselected package libdw1:amd64.
(Reading database ... 103455 files and directories currently installed.)
Preparing to unpack .../00-libdw1_0.176-1.1build1_amd64.deb ...
Unpacking libdw1:amd64 (0.176-1.1build1) ...
Selecting previously unselected package libbabeltrace1:amd64.
Preparing to unpack .../01-libbabeltrace1_1.5.8-1build1_amd64.deb ...
Unpacking libbabeltrace1:amd64 (1.5.8-1build1) ...
Selecting previously unselected package gdb.
Preparing to unpack .../02-gdb_9.2-0ubuntu1~20.04.1_amd64.deb ...
Unpacking gdb (9.2-0ubuntu1~20.04.1) ...
Selecting previously unselected package gdbserver.
Preparing to unpack .../03-gdbserver_9.2-0ubuntu1~20.04.1_amd64.deb ...
Unpacking gdbserver (9.2-0ubuntu1~20.04.1) ...
Selecting previously unselected package libatomic1:amd64.
Preparing to unpack .../04-libatomic1_10.5.0-1ubuntu1~20.04_amd64.deb ...
Unpacking libatomic1:amd64 (10.5.0-1ubuntu1~20.04) ...
Selecting previously unselected package libc++abi1-10:amd64.
Preparing to unpack .../05-libc++abi1-10_1%3a10.0.0-4ubuntu1_amd64.deb ...
Unpacking libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
Selecting previously unselected package libc++1-10:amd64.
Preparing to unpack .../06-libc++1-10_1%3a10.0.0-4ubuntu1_amd64.deb ...
Unpacking libc++1-10:amd64 (1:10.0.0-4ubuntu1) ...
Selecting previously unselected package libcc1-0:amd64.
Preparing to unpack .../07-libcc1-0_10.5.0-1ubuntu1~20.04_amd64.deb ...
Unpacking libcc1-0:amd64 (10.5.0-1ubuntu1~20.04) ...
Selecting previously unselected package libsasl2-modules-gssapi-mit:amd64.
Preparing to unpack .../08-libsasl2-modules-gssapi-mit_2.1.27+dfsg-2ubuntu0.1_amd64.deb ...
Unpacking libsasl2-modules-gssapi-mit:amd64 (2.1.27+dfsg-2ubuntu0.1) ...
Selecting previously unselected package libc++1:amd64.
Preparing to unpack .../09-libc++1_1%3a10.0-50~exp1_amd64.deb ...
Unpacking libc++1:amd64 (1:10.0-50~exp1) ...
Selecting previously unselected package libc6-dbg:amd64.
Preparing to unpack .../10-libc6-dbg_2.31-0ubuntu9.9_amd64.deb ...
Unpacking libc6-dbg:amd64 (2.31-0ubuntu9.9) ...
Selecting previously unselected package libsss-nss-idmap0.
Preparing to unpack .../11-libsss-nss-idmap0_2.2.3-3ubuntu0.12_amd64.deb ...
Unpacking libsss-nss-idmap0 (2.2.3-3ubuntu0.12) ...
Selecting previously unselected package mssql-server.
Preparing to unpack .../12-mssql-server_15.0.4322.2-1_amd64.deb ...
Unpacking mssql-server (15.0.4322.2-1) ...
Setting up libdw1:amd64 (0.176-1.1build1) ...
Setting up libc6-dbg:amd64 (2.31-0ubuntu9.9) ...
Setting up libatomic1:amd64 (10.5.0-1ubuntu1~20.04) ...
Setting up libbabeltrace1:amd64 (1.5.8-1build1) ...
Setting up libc++abi1-10:amd64 (1:10.0.0-4ubuntu1) ...
Setting up gdbserver (9.2-0ubuntu1~20.04.1) ...
Setting up libsss-nss-idmap0 (2.2.3-3ubuntu0.12) ...
Setting up libsasl2-modules-gssapi-mit:amd64 (2.1.27+dfsg-2ubuntu0.1) ...
Setting up libcc1-0:amd64 (10.5.0-1ubuntu1~20.04) ...
Setting up libc++1-10:amd64 (1:10.0.0-4ubuntu1) ...
Setting up gdb (9.2-0ubuntu1~20.04.1) ...
Setting up libc++1:amd64 (1:10.0-50~exp1) ...
Setting up mssql-server (15.0.4322.2-1) ...
+--------------------------------------------------------------+
Please run 'sudo /opt/mssql/bin/mssql-conf setup'
to complete the setup of Microsoft SQL Server
+--------------------------------------------------------------+
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.9) ...
3. Chuẩn bị môi trường.
Chạy lệnh sau để lựa chọn 1 môi trường làm việc cho MSSQL.
sudo /opt/mssql/bin/mssql-conf setup
Tham khảo đầu ra của nó để thấy tổng quan các lựa chọn mẫu.
$ sudo /opt/mssql/bin/mssql-conf setup
Choose an edition of SQL Server:
1) Evaluation (free, no production use rights, 180-day limit)
2) Developer (free, no production use rights)
3) Express (free)
4) Web (PAID)
5) Standard (PAID)
6) Enterprise (PAID) - CPU Core utilization restricted to 20 physical/40 hyperthreaded
7) Enterprise Core (PAID) - CPU Core utilization up to Operating System Maximum
8) I bought a license through a retail sales channel and have a product key to enter.
Details about editions can be found at
https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x409
Use of PAID editions of this software requires separate licensing through a
Microsoft Volume Licensing program.
By choosing a PAID edition, you are verifying that you have the appropriate
number of licenses in place to install and run this software.
Enter your edition(1-8): 2
The license terms for this product can be found in
/usr/share/doc/mssql-server or downloaded from:
https://go.microsoft.com/fwlink/?LinkId=2104294&clcid=0x409
The privacy statement can be viewed at:
https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x409
Do you accept the license terms? [Yes/No]:y
Enter the SQL Server system administrator password:
Confirm the SQL Server system administrator password:
Configuring SQL Server...
ForceFlush is enabled for this instance.
ForceFlush feature is enabled for log durability.
Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /lib/systemd/system/mssql-server.service.
Setup has completed successfully. SQL Server is now starting.
Các tùy chọn SQL Server đã liệt kê ở trên đều liên quan đến các phiên bản khác nhau của SQL Server và cách chúng được sử dụng trong môi trường Linux.
Dưới đây là mô tả ngắn gọn về từng tùy chọn:
- Evaluation (đánh giá):
- Phiên bản này miễn phí nhưng chỉ dành cho mục đích đánh giá và không được sử dụng trong môi trường sản xuất.
- Giới hạn sử dụng trong 180 ngày.
- Developer (phát triển):
- Miễn phí và không dùng cho môi trường sản xuất.
- Được thiết kế cho việc phát triển ứng dụng và kiểm thử.
- Express (phiên bản cơ bản):
- Miễn phí và phù hợp cho các ứng dụng nhỏ và dự án cá nhân.
- Có giới hạn về tài nguyên (RAM, CPU, kích thước cơ sở dữ liệu).
- Web (trả phí):
- Phiên bản dành riêng cho các ứng dụng web và trả phí theo số lượng phiên bản cài đặt.
- Standard (trả phí):
- Phiên bản trả phí với nhiều tính năng cao cấp hơn so với Express hoặc Web.
- Thích hợp cho các ứng dụng doanh nghiệp vừa và nhỏ.
- Enterprise (trả phí) – Giới hạn sử dụng CPU Core:
- Phiên bản cao cấp, hỗ trợ nhiều tính năng mạnh mẽ cho các ứng dụng lớn và phức tạp.
- Sử dụng hạn chế số lượng lõi CPU (20 lõi vật lý hoặc 40 lõi hyperthreaded).
- Enterprise Core (trả phí) – Không giới hạn CPU Core:
- Phiên bản cao cấp tương tự như Enterprise, nhưng không hạn chế số lượng lõi CPU sử dụng.
- Mua giấy phép thông qua kênh bán lẻ và có key sản phẩm:
- Phiên bản mua giấy phép, cho phép bạn sử dụng phiên bản phù hợp với giấy phép bạn đã mua.
Khi triển khai SQL Server trên Linux, bạn cần chọn phiên bản phù hợp với nhu cầu và tài nguyên của ứng dụng của bạn. Các phiên bản trả phí thường cung cấp nhiều tính năng và khả năng mở rộng hơn, trong khi các phiên bản miễn phí thích hợp cho các môi trường nhỏ hơn hoặc mục đích phát triển.
Bật tính năng tự khởi động theo hệ thống cho MSSQL.
systemctl enable mssql-server
Kiểm tra trạng thái hoạt động.
$ systemctl status mssql-server
● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-08-18 04:12:13 UTC; 21s ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Main PID: 85534 (sqlservr)
Tasks: 143
Memory: 818.2M
CGroup: /system.slice/mssql-server.service
├─85534 /opt/mssql/bin/sqlservr
└─85587 /opt/mssql/bin/sqlservr
4. Cài đặt MSSQL Client.
Để có công cụ kết nối vào MSSQL Server thì bạn cần có 1 công cụ Client để kết nối.
Chạy lệnh dưới để cập nhật khóa GPG.
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
Thêm khóa này vào hệ thống.
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
Cập nhật vào danh sách gói và cài đặt các gói mssql-tools unixodbc-dev.
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev -y
Nếu có câu hỏi nào lúc cài đặt, hãy lựa chọn Yes.
Tạo biến môi trường vào file ~/.bash_profile và chạy source ~/.bashrc để cập nhật nó.
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bashrc
5. Kết nối tới SQL Server trong Localhost.
Sử dụng cú pháp sqlcmd -S localhost -U sa -P '<mật khẩu>'
để kết nối vào DB.
$ sqlcmd -S localhost -U sa -P 'Hoanghd164'
1>
5. Kết nối từ xa.
Sử dụng cú pháp sqlcmd -S localhost -U sa -P '<mật khẩu>'
để kết nối vào DB.
$ sqlcmd -S localhost -U sa -P 'Hoanghd164'
1>
Chạy các truy vấn sau để thực hiện việc cấu hình tùy chọn “remote access” trong SQL Server bằng cách tắt truy cập từ xa. Sau khi thay đổi này, câu lệnh RECONFIGURE
được sử dụng để áp dụng thay đổi cấu hình. Vui lòng lưu ý rằng việc thay đổi cấu hình như vậy có thể ảnh hưởng đến khả năng truy cập từ xa vào SQL Server, vì vậy bạn nên thực hiện thay đổi này cẩn thận và dựa trên nhu cầu cụ thể của ứng dụng và môi trường của bạn.
EXEC sp_configure 'remote access', 0;
GO
RECONFIGURE;
GO
6. Kiểm tra phiên bản SQL Server.
$ sqlcmd -S localhost -U SA -Q 'select @@VERSION'
Password:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Microsoft SQL Server 2019 (RTM-CU22) (KB5027702) - 15.0.4322.2 (X64)
Jul 27 2023 18:11:00
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 20.04.6 LTS) <X64>
(1 rows affected)
7. Tạo một SQL Server database trên Ubuntu
Sử dụng cú pháp sqlcmd -S localhost -U sa -P '<mật khẩu>'
để kết nối vào DB.
$ sqlcmd -S localhost -U sa -P 'Hoanghd164'
1>
Dưới đây là ví dụ cách truy vấn.
CREATE DATABASE <tên CSDL>;
SELECT Name from sys.databases;
GO
Ví dụ.
$ sqlcmd -S localhost -U sa -P 'Hoanghd164'
1> CREATE DATABASE hoanghd;
2> SELECT Name from sys.databases;
3> GO
Name
--------------------------------------------------------------------------------------------------------------------------------
master
tempdb
model
msdb
hoanghd
(5 rows affected)
1>
8. Cách gỡ bỏ MSSQL.
Đơn giản chỉ việc chạy lệnh sudo apt-get remove <tên dịch vụ>.
sudo apt-get remove mssql-server
Và xóa đi thư mục liên quan , ví dụ /var/opt/mssql
.
sudo rm -rf /var/opt/mssql/