在 Ubuntu 20.04 上安装 SQL Server 2019 (15.x)

文档

安装

安装方式有二(本文采用第一种方式安装,但官方推荐第二种):

第一种方式:导入存储库后,在线安装

1# 导入公共存储库 GPG 密钥:
2curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
3
4# 注册 SQL Server Ubuntu 存储库:
5sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2019.list)"
6
7# 安装 SQL Server:
8sudo apt-get update
9sudo apt-get install -y mssql-server

第二种方式:

下载地址:https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/mssql-server/

1# 安装依赖:
2sudo apt install gdb gdbserver libbabeltrace1 libc++1 libc++abi1 libc6-dbg libdw1 libsasl2-modules-gssapi-mit libsss-nss-idmap0 libatomic1 gawk libsigsegv2
3
4# 在上面的下载地址中下载mssql-server_15.0.4316.3-2_amd64.deb,然后安装:
5sudo dpkg -i mssql-server_15.0.4316.3-2_amd64.deb
6
7# 如果安装过程中出错,执行:
8sudo apt --fix-broken install

数据库初始化:

1sudo /opt/mssql/bin/mssql-conf setup

第一步:选择sqlserver版本,一般选择 2(Developer)或 3(Express);本例中选 3

说明:

SQL Server Developer 开发人员版包含了企业版全部的完整功能,但该版本仅能用于开发、测试和演示用途,并不允许部署到生产环境中。

Express 速成版则是完全免费的入门级 SQL Server 数据库版本,适用于学习、开发、或部署较小规模的 WEB 和应用程序服务器。

第二步:接受许可,输入:yes

第三步:选择语言:选择 10(简体中文)

第四步:输入 sa 帐户的密码和确认密码

等待安装完成即可

初始化示例如下:

 1zhangcong@zhangcong-virtual-machine:~$ sudo /opt/mssql/bin/mssql-conf setup
 2选择 SQL Server 的一个版本:
 3  1) Evaluation (免费,无生产许可,180 天限制)
 4  2) Developer (免费,无生产许可)
 5  3) Express (免费)
 6  4) Web (付费版)
 7  5) Standard (付费版)
 8  6) Enterprise (付费版) - CPU 核心利用率限制为 20 个物理/40 个超线程
 9  7) Enterprise Core (付费版) - CPU 核心利用率达到操作系统最大值
10  8) 我通过零售渠道购买了许可证并具有要输入的产品密钥。
11
12可在以下位置找到有关版本的详细信息:
13https://go.microsoft.com/fwlink/?LinkId=2109348&clcid=0x804
14
15使用此软件的付费版本需要通过以下途径获取单独授权
16Microsoft 批量许可计划。
17选择付费版本即表示你具有适用的
18要安装和运行此软件的就地许可证数量。
19
20输入版本(1-8): 3
21可以在以下位置找到此产品的许可条款:
22/usr/share/doc/mssql-server 或从以下位置下载:
23https://go.microsoft.com/fwlink/?LinkId=2104294&clcid=0x804
24
25可以从以下位置查看隐私声明:
26https://go.microsoft.com/fwlink/?LinkId=853010&clcid=0x804
27
28接受此许可条款吗? [Yes/No]:yes
29
30
31选择 SQL Server 的语言:
32(1) English
33(2) Deutsch
34(3) Español
35(4) Français
36(5) Italiano
37(6) 日本語
38(7) 한국어
39(8) Português
40(9) Руѝѝкий
41(10) 中文 – 简体
42(11) 中文 (繝体)
43输入选项 1-11:10
44输入 SQL Server 系统管理员密码: 
45确认 SQL Server 系统管理员密码: 
46正在配置 SQL Server...
47
48已成功处理授权 PID。新版本为 [Express Edition]49ForceFlush is enabled for this instance. 
50ForceFlush feature is enabled for log durability.
51Created symlink /etc/systemd/system/multi-user.target.wants/mssql-server.service → /lib/systemd/system/mssql-server.service.
52安装程序已成功完成。SQL Server 正在启动。

安装完成后,服务已经开启,并设置为开机启动

查看服务状态

查看服务状态:

sudo service mssql-server status

或者:

systemctl status mssql-server

重启服务:

sudo service mssql-server restart

启动服务:

sudo service mssql-server start

关闭服务:

sudo service mssql-server stop

关闭服务开机启动:

sudo systemctl disable mssql-server

服务开机启动:

sudo systemctl enable mssql-server

安装 SQL Server 命令行工具

若要创建数据库,则需要使用可在 SQL Server 上运行 Transact-SQL 语句的工具进行连接。

以下两种方式将安装 SQL Server 命令行工具(本文采用第二种,但官方推荐在线安装):sqlcmd 和 bcp。

第一种方式:导入存储库后,在线安装

 1# 导入公共存储库 GPG 密钥(如果上面已经导入了,无须再次导入)
 2curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
 3
 4# 注册 Microsoft Ubuntu 存储库。
 5对于 Ubuntu 20.04,请使用以下命令:
 6curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
 7
 8# 更新源列表,并使用 unixODBC 开发人员包运行安装命令
 9sudo apt-get update
10sudo apt-get install mssql-tools18 unixodbc-dev
11
12# 把sqlserver工具添加到环境变量(可选)
13echo 'export PATH=$PATH:/opt/mssql-tools18/bin' >> /etc/profile

第二种方式:离线下载,手动安装

下载地址:

 1# 安装依赖:
 2sudo apt-get update
 3sudo apt install unixodbc unixodbc-dev
 4
 5# 在上面的下载地址中下载 msodbcsql18_18.2.2.1-1_amd64.deb 和 mssql-tools18_18.2.1.1-1_amd64.deb h,然后安装:
 6sudo dpkg -i msodbcsql18_18.2.2.1-1_amd64.deb mssql-tools18_18.2.1.1-1_amd64.deb
 7
 8# 如果安装过程中出错,执行:
 9sudo apt --fix-broken install
10
11# 把sqlserver工具添加到环境变量(可选)
12echo 'export PATH=$PATH:/opt/mssql-tools18/bin' >> /etc/profile

使用 sqlcmd 本地连接到新的 SQL Server 实例

以下步骤使用 sqlcmd 本地连接到新的 SQL Server 实例。

使用 SQL Server 名称 (-S)、用户名 (-U) 和密码 (-P) 的相应参数运行 sqlcmd。

注意:如果驱动版本为ODBC Driver 18 for SQL Server,要加 -C 参数,表示:Trust Server Certificate;否则提示证书校验失败(旧版没有这个问题)

在本教程中,用户进行本地连接,因此服务器名称为 localhost。

用户名为 sa,密码是在安装过程中为 SA 帐户提供的密码。

1sqlcmd -S localhost -U sa -P '<YourPassword>'  -C

或者:

1sqlcmd -S localhost -U sa -C

系统将提示输入密码

更新sqlsrv驱动到ODBC Driver 18 for SQL Server后,产生TLS加密的问题

更新sqlsrv驱动到ODBC Driver 18 for SQL Server后,产生TLS加密的问题,问题如下:

SQLSTATE[08001]: [Microsoft][ODBC Driver 18 for SQL Server]SSL Provider: [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:self signed certificate]

原因:该问题由SSL使用TLS加密通讯引起的证书问题,与代码无关(使用旧版的17驱动没有问题)。

解决办法:如果是使用\PDO连接,在连接的DSN信息增加TrustServerCertificate=1,Encrypt=1即可,在options增加无效。

例如:sqlsrv:Server=IP,端口;Database=dbname;TrustServerCertificate=1;Encrypt=1

sqlserver 简单操作

以下皆在 sqlcmd 命令提示符中操作:

 1-- 创建一个名为 test 的新数据库:
 2CREATE DATABASE test;
 3 
 4
 5-- 查询服务器上所有数据库的名称:
 6SELECT Name from sys.databases;
 7
 8-- 前两个命令没有立即执行。必须在新行中键入 GO 才能执行以前的命令(go后面不能加分号):
 9GO
10
11-- 将上下文切换到新的 test 数据库:
12USE test;
13
14-- 创建名为 dbo.Inventory 的表:
15CREATE TABLE dbo.Inventory (id bigint NOT NULL primary key identity(1, 1), name NVARCHAR(50), quantity INT);
16-- 插入两行数据:
17INSERT INTO dbo.Inventory VALUES (1, 'banana', 150);
18INSERT INTO dbo.Inventory VALUES (2, 'orange', 154);
19-- 执行上述命令(go后面不能加分号):
20GO
21
22-- 查询dbo.Inventory 表中数量大于 152 的数据:
23SELECT * FROM dbo.Inventory WHERE quantity > 152;
24
25-- 执行查询命令:
26GO

使用 Navicat Premium 16 连接 SQL server

如果在连接过程中出现如下错误:

[IM002] [Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序(0)

先进入 Navicat Premium 16 安装目录,找到 msodbcsql_64.msi ,安装成功后重试。