使用 mssql-conf 工具配置 Linux 上的 SQL Server
适用于: SQL Server - Linux
mssql-conf 是在 Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Ubuntu 中随 SQL Server 2017 (14.x) 安装的配置脚本。 它会修改存储配置值的 mssql.conf 文件。 可使用 mssql-conf 实用工具设置以下参数:
参数 | 描述 |
---|---|
代理 | 启用 SQL Server 代理。 |
向 Windows 进行身份验证 | Windows Server Active Directory 身份验证的设置。 |
排序规则 | 为 Linux 上的 SQL Server 设置新排序规则。 |
客户反馈 | 选择 SQL Server 是否向 Microsoft 发送反馈。 |
数据库邮件配置文件 | 为 Linux 上的 SQL Server 设置默认数据库邮件配置文件。 |
默认数据目录 | 更改新 SQL Server 数据库数据文件 (.mdf) 的默认目录。 |
默认日志目录 | 更改新 SQL Server 数据库日志 (.ldf) 文件的默认目录。 |
默认 master 数据库目录 | 更改 master 数据库和日志文件的默认目录。 |
默认 master 数据库文件名 | 更改 master 数据库文件的名称。 |
默认转储目录 | 更改新内存转储和其他故障诊断文件的默认目录。 |
默认错误日志目录 | 更改新 SQL Server 错误日志、默认探查器跟踪、系统健康状况会话 XE 和 Hekaton 会话 XE 文件的默认目录。 |
默认备份目录 | 更改新备份文件的默认目录。 |
转储类型 | 选择要收集的转储内存转储文件的类型。 |
版本(Edition) | 设置 SQL Server 的版本。 |
高可用性 | 启用可用性组。 |
本地审核目录 | 设置目录以添加本地审核文件。 |
区域设置 | 设置 SQL Server 要使用的区域设置。 |
内存限制 | 设置 SQL Server 的内存限制。 |
网络设置 | SQL Server 的其他网络设置。 |
Microsoft 分布式事务处理协调器 | 在 Linux 上配置 MSDTC 并对其进行故障排除。 |
TCP 端口 | 更改 SQL Server 侦听连接的端口。 |
TLS | 配置传输级别安全性。 |
跟踪标志 | 设置服务要使用的跟踪标志。 |
mssql-conf 是随 SQL Server 2019 (15.x) for Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Ubuntu 安装的配置脚本。 可以使用此实用工具设置以下参数:
参数 | 描述 |
---|---|
代理 | 启用 SQL Server 代理 |
向 Windows 进行身份验证 | Windows Server Active Directory 身份验证的设置。 |
排序规则 | 为 Linux 上的 SQL Server 设置新排序规则。 |
客户反馈 | 选择 SQL Server 是否向 Microsoft 发送反馈。 |
数据库邮件配置文件 | 为 Linux 上的 SQL Server 设置默认数据库邮件配置文件。 |
默认数据目录 | 更改新 SQL Server 数据库数据文件 (.mdf) 的默认目录。 |
默认日志目录 | 更改新 SQL Server 数据库日志 (.ldf) 文件的默认目录。 |
默认 master 数据库文件目录 | 更改现有 SQL 安装中 master 数据库文件的默认目录。 |
默认 master 数据库文件名 | 更改 master 数据库文件的名称。 |
默认转储目录 | 更改新内存转储和其他故障诊断文件的默认目录。 |
默认错误日志目录 | 更改新 SQL Server 错误日志、默认探查器跟踪、系统健康状况会话 XE 和 Hekaton 会话 XE 文件的默认目录。 |
默认备份目录 | 更改新备份文件的默认目录。 |
转储类型 | 选择要收集的转储内存转储文件的类型。 |
版本(Edition) | 设置 SQL Server 的版本。 |
高可用性 | 启用可用性组。 |
本地审核目录 | 设置目录以添加本地审核文件。 |
区域设置 | 设置 SQL Server 要使用的区域设置。 |
内存限制 | 设置 SQL Server 的内存限制。 |
Microsoft 分布式事务处理协调器 | 在 Linux 上配置 MSDTC 并对其进行故障排除。 |
机器学习服务 EULA | 对于 mlservices 包,接受 R 和 Python EULA。 仅适用于 SQL Server 2019 (15.x)。 |
网络设置 | SQL Server 的其他网络设置。 |
outboundnetworkaccess | 为机器学习服务 R、Python 和 Java 扩展启用出站网络访问。 |
TCP 端口 | 更改 SQL Server 侦听连接的端口。 |
TLS | 配置传输级别安全性。 |
跟踪标志 | 设置服务要使用的跟踪标志。 |
mssql-conf 是随 SQL Server 2022 (16.x) for Red Hat Enterprise Linux 和 Ubuntu 安装的配置脚本。 可以使用此实用工具设置以下参数:
参数 | 描述 |
---|---|
代理 | 启用 SQL Server 代理 |
使用 Microsoft Entra ID 进行身份验证 | 设置用于使用 Microsoft Entra ID(以前称为 Azure Active Directory)进行身份验证。 |
向 Windows 进行身份验证 | Windows Server Active Directory 身份验证的设置。 |
排序规则 | 为 Linux 上的 SQL Server 设置新排序规则。 |
客户反馈 | 选择 SQL Server 是否向 Microsoft 发送反馈。 |
数据库邮件配置文件 | 为 Linux 上的 SQL Server 设置默认数据库邮件配置文件。 |
默认数据目录 | 更改新 SQL Server 数据库数据文件 (.mdf) 的默认目录。 |
默认日志目录 | 更改新 SQL Server 数据库日志 (.ldf) 文件的默认目录。 |
默认 master 数据库文件目录 | 更改现有 SQL 安装中 master 数据库文件的默认目录。 |
默认 master 数据库文件名 | 更改 master 数据库文件的名称。 |
默认转储目录 | 更改新内存转储和其他故障诊断文件的默认目录。 |
默认错误日志目录 | 更改新 SQL Server 错误日志、默认探查器跟踪、系统健康状况会话 XE 和 Hekaton 会话 XE 文件的默认目录。 |
默认备份目录 | 更改新备份文件的默认目录。 |
转储类型 | 选择要收集的转储内存转储文件的类型。 |
版本(Edition) | 设置 SQL Server 的版本。 |
高可用性 | 启用可用性组。 |
本地审核目录 | 设置目录以添加本地审核文件。 |
区域设置 | 设置 SQL Server 要使用的区域设置。 |
内存限制 | 设置 SQL Server 的内存限制。 |
Microsoft 分布式事务处理协调器 | 在 Linux 上配置 MSDTC 并对其进行故障排除。 |
机器学习服务 EULA | 对于 mlservices 包,接受 R 和 Python EULA。 仅适用于 SQL Server 2019 (15.x)。 |
网络设置 | SQL Server 的其他网络设置。 |
出站网络访问 | 为机器学习服务 R、Python 和 Java 扩展启用出站网络访问。 |
SQL Server 连接器 | 配置 SQL Server 连接器的日志记录级别。 |
TCP 端口 | 更改 SQL Server 侦听连接的端口。 |
TLS | 配置传输级别安全性。 |
跟踪标志 | 设置服务要使用的跟踪标志。 |
提示
还可以使用环境变量配置其中某些设置。 有关详细信息,请参阅在 Linux 上使用环境变量配置 SQL Server 设置。
使用提示
对于 Always On 可用性组和共享磁盘群集,始终在每个节点上进行相同的配置更改。
对于共享磁盘群集方案,请勿尝试重新启动
mssql-server
服务以应用更改。 SQL Server 作为应用程序运行。 应将资源脱机,然后重新联机。这些示例通过指定以下完整路径来运行 mssql-conf:
/opt/mssql/bin/mssql-conf
。 如果选择改为导航到该路径,请在当前目录./mssql-conf
的上下文中运行 mssql-conf。如果想要修改容器内部的
mssql.conf
文件,请在以所需配置运行容器的主机上创建mssql.conf
文件,然后重新部署容器。 例如,对mssql.conf
文件完成以下添加后,将启用 SQL Server 代理。[sqlagent] enabled = true
可以使用以下命令部署容器:
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \ -p 5433:1433 --name sql1 \ -v /container/sql1:/var/opt/mssql \ -d mcr.microsoft.com/mssql/server:2019-latest
有关详细信息,请参阅创建 SQL Server 容器要使用的 config 文件。
启用 SQL Server 代理
sqlagent.enabled
设置可启用 SQL Server 代理。 默认情况下,SQL Server 代理处于禁用状态。 如果 mssql.conf 设置文件中不存在 sqlagent.enabled
,则 SQL Server 在内部假定已禁用 SQL Server 代理。
若要更改此设置,请使用以下步骤:
启用 SQL Server 代理:
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
重启 SQL Server 服务:
sudo systemctl restart mssql-server
为 Linux 上的 SQL Server 设置默认数据库邮件配置文件
通过 sqlagent.databasemailprofile
,可为电子邮件警报设置默认的 DB 邮件配置文件。
sudo /opt/mssql/bin/mssql-conf set sqlagent.databasemailprofile <profile_name>
SQL 代理错误日志
通过 sqlagent.errorlogfile
和 sqlagent.errorlogginglevel
设置,可分别设置 SQL 代理日志文件路径和日志记录级别。
sudo /opt/mssql/bin/mssql-conf set sqlagent.errorlogfile <path>
SQL 代理日志记录级别是位掩码值,等于:
1
= 错误2
= 警告4
= 信息
如果要捕获所有级别,请使用 7
作为值。
sudo /opt/mssql/bin/mssql-conf set sqlagent.errorlogginglevel <level>
配置 Microsoft Entra 身份验证
从 SQL Server 2022 (16.x) 开始,可以为 SQL Server 配置 Microsoft Entra ID。 若要配置 Microsoft Entra ID,必须在安装 SQL Server 之后安装用于 SQL Server 的 Azure 扩展。 有关如何配置 Microsoft Entra ID 的信息,请参阅教程:为 SQL Server 设置 Microsoft Entra 身份验证。
更改默认的 Microsoft Entra ID 证书路径
默认情况下,Microsoft Entra 证书文件存储在 /var/opt/mssql/aadsecrets/
中。 如果使用证书存储或加密驱动器,则可以更改此路径。 若要更改路径,可以使用以下命令:
sudo /opt/mssql/bin/mssql-conf set network.aadcertificatefilepath /path/to/new/location.pfx
在前面的示例中,/path/to/new/location.pfx
是首选路径,包括证书名称。
用于 SQL Server 的 Azure 扩展下载的 Microsoft Entra 身份验证的证书存储在此位置。 你无法将其更改为 /var/opt/mssql/secrets
。
注意
安装 SQL Server 后,虽然可以随时更改默认的 Microsoft Entra ID 证书路径,但必须在启用 Microsoft Entra ID“之前”更改。
Microsoft Entra ID 配置选项
Microsoft Entra 身份验证将以下选项用于 Linux 上运行的 SQL Server 实例。
警告
Microsoft Entra ID 参数由用于 SQL Server 的 Azure 扩展配置,不应手动重新配置。 此处列出的选项仅供参考。
选项 | 说明 |
---|---|
network.aadauthenticationendpoint |
用于 Microsoft Entra 身份验证的端点 |
network.aadcertificatefilepath |
对 Microsoft Entra ID 进行身份验证的证书文件的路径 |
network.aadclientcertblacklist |
Microsoft Entra ID 客户端证书阻止列表 |
network.aadclientid |
Microsoft Entra 客户端 GUID |
network.aadfederationmetadataendpoint |
Microsoft Entra 联盟元数据的端点 |
network.aadgraphapiendpoint |
Azure AD Graph API 的终结点 |
network.aadgraphendpoint |
Azure AD Graph 终结点: |
network.aadissuerurl |
Microsoft Entra 发卡机构 URL |
network.aadmsgraphendpoint |
Microsoft Entra MS 绘入图表端点 |
network.aadonbehalfofauthority |
Microsoft Entra ID 代表授权机构 |
network.aadprimarytenant |
Microsoft Entra 主租户 GUID |
network.aadsendx5c |
Microsoft Entra ID Send X5C |
network.aadserveradminname |
将作为 sysadmin 的 Microsoft Entra 帐户的名称 |
network.aadserveradminsid |
将作为 sysadmin 的 Microsoft Entra 帐户的 SID |
network.aadserveradmintype |
将作为 sysadmin 的 Microsoft Entra 帐户的类型 |
network.aadserviceprincipalname |
Microsoft Entra 服务主体名称 |
network.aadserviceprincipalnamenoslash |
Microsoft Entra 服务主体名称,没有斜杠 |
network.aadstsurl |
Microsoft Entra STS URL |
配置 Windows Active Directory 身份验证
setup-ad-keytab
选项可用于创建密钥表,但必须创建了用户和服务主体名称 (SPN) 才能使用此选项。 Active Directory 实用工具 adutil 可用于创建用户、SPN 和密钥表。
有关使用 setup-ad-keytab
的选项,请运行以下命令:
sudo /opt/mssql/bin/mssql-conf setup-ad-keytab --help
validate-ad-config
选项验证 Active Directory 身份验证的配置。
更改 SQL Server 排序规则
set-collation
选项可将排序规则值更改为支持的任何排序规则。 若要进行此更改,需要停止 SQL Server 服务。
首先,备份服务器上的所有用户数据库。
然后,使用 sp_detach_db 存储过程分离用户数据库。
运行
set-collation
选项并按照提示进行操作:sudo /opt/mssql/bin/mssql-conf set-collation
mssql-conf 实用工具会尝试更改为指定的排序规则值并重新启动该服务。 如果出现任何错误,它会将排序规则回滚到前一个值。
还原用户数据库备份。
若要获取支持的排序规则的列表,请运行 sys.fn_helpcollations 函数:SELECT Name from sys.fn_helpcollations()
。
配置客户反馈
使用 telemetry.customerfeedback
设置可更改 SQL Server 是否向 Microsoft 发送反馈。 默认情况下,对于所有版本,此值设置为 true
。 若要更改该值,请运行以下命令:
重要
无法关闭 SQL Server、Express 和 Developer 免费版本的客户反馈。
使用
telemetry.customerfeedback
的set
命令以 root 身份运行 mssql-conf 脚本。 以下示例通过指定false
来关闭客户反馈。sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false
重启 SQL Server 服务:
sudo systemctl restart mssql-server
有关详细信息,请参阅为 Linux 上的 SQL Server 配置使用情况和诊断数据收集和 SQL Server 隐私补充。
更改默认数据或日志目录位置
使用 filelocation.defaultdatadir
和 filelocation.defaultlogdir
设置可更改创建新数据库和日志文件的位置。 默认情况下,此位置是 /var/opt/mssql/data
。 若要更改这些设置,请使用以下步骤:
为新的数据库数据和日志文件创建目标目录。 以下示例创建新的
/tmp/data
目录:sudo mkdir /tmp/data
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/data sudo chgrp mssql /tmp/data
使用 mssql-conf 通过
set
命令更改默认数据目录:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /tmp/data
重启 SQL Server 服务:
sudo systemctl restart mssql-server
现在,为新数据库创建的所有数据库文件都存储在此新位置。 如果要更改新数据库的日志文件 (.ldf) 位置,可以使用下面的
set
命令:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /tmp/log
此命令还假定存在 /tmp/log 目录,并且它位于用户和组
mssql
下。
更改默认的 master
数据库文件目录位置
使用 filelocation.masterdatafile
和 filelocation.masterlogfile
设置可更改 SQL Server 数据库引擎查找 master
数据库文件的位置。 默认情况下,此位置是 /var/opt/mssql/data
。
若要更改这些设置,请使用以下步骤:
为新的错误日志文件创建目标目录。 以下示例创建新的
/tmp/masterdatabasedir
目录:sudo mkdir /tmp/masterdatabasedir
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/masterdatabasedir sudo chgrp mssql /tmp/masterdatabasedir
使用 mssql-conf 通过
set
命令更改主数据和日志文件的默认master
数据库目录:sudo /opt/mssql/bin/mssql-conf set filelocation.masterdatafile /tmp/masterdatabasedir/master.mdf sudo /opt/mssql/bin/mssql-conf set filelocation.masterlogfile /tmp/masterdatabasedir/mastlog.ldf
注意
除了移动主数据和日志文件外,此操作还将移动所有其他系统数据库的默认位置。
停止 SQL Server 服务:
sudo systemctl stop mssql-server
移动
master.mdf
和mastlog.ldf
文件:sudo mv /var/opt/mssql/data/master.mdf /tmp/masterdatabasedir/master.mdf sudo mv /var/opt/mssql/data/mastlog.ldf /tmp/masterdatabasedir/mastlog.ldf
启动 SQL Server 服务:
sudo systemctl start mssql-server
注意
如果 SQL Server 在指定目录中找不到
master.mdf
和mastlog.ldf
文件,将在指定目录中自动创建系统数据库的模板化副本,并且 SQL Server 将成功启动。 但是,诸如用户数据库、服务器登录名、服务器证书、加密密钥、SQL 代理作业或旧 SA 登录密码等元数据将不会在新master
数据库中更新。 必须停止 SQL Server 并将旧的master.mdf
和mastlog.ldf
移动到新的指定位置,然后启动 SQL Server 以继续使用现有元数据。
更改 master
数据库文件的名称
使用 filelocation.masterdatafile
和 filelocation.masterlogfile
设置可更改 SQL Server 数据库引擎查找 master
数据库文件的位置。 还可以使用它来更改 master
数据库和日志文件的名称。
若要更改这些设置,请使用以下步骤:
停止 SQL Server 服务:
sudo systemctl stop mssql-server
使用 mssql-conf 通过
set
命令更改master
数据和日志文件的预期master
数据库名称:sudo /opt/mssql/bin/mssql-conf set filelocation.masterdatafile /var/opt/mssql/data/masternew.mdf sudo /opt/mssql/bin/mssql-conf set filelocation.mastlogfile /var/opt/mssql/data/mastlognew.ldf
重要
只能在 SQL Server 成功启动后更改
master
数据库和日志文件的名称。 在初始运行之前,SQL Server 会要求文件命名为master.mdf
和mastlog.ldf
。更改
master
数据库数据和日志文件的名称:sudo mv /var/opt/mssql/data/master.mdf /var/opt/mssql/data/masternew.mdf sudo mv /var/opt/mssql/data/mastlog.ldf /var/opt/mssql/data/mastlognew.ldf
启动 SQL Server 服务:
sudo systemctl start mssql-server
更改默认转储目录位置
使用 filelocation.defaultdumpdir
设置可更改每当系统崩溃时生成内存和 SQL 转储的默认位置。 默认情况下,这些文件在 /var/opt/mssql/log
中生成。
若要设置新位置,请使用以下命令:
为新的转储文件创建目标目录。 以下示例创建新的
/tmp/dump
目录:sudo mkdir /tmp/dump
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/dump sudo chgrp mssql /tmp/dump
使用 mssql-conf 通过
set
命令更改默认数据目录:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /tmp/dump
重启 SQL Server 服务:
sudo systemctl restart mssql-server
更改默认的错误日志文件目录位置
使用 filelocation.errorlogfile
设置可更改创建新错误日志、默认探查器跟踪、系统健康状况会话 XE 和 Hekaton 会话 XE 文件的位置。 默认情况下,此位置是 /var/opt/mssql/log
。 设置 SQL Server 错误日志文件的目录将成为其他日志的默认日志目录。
若要更改这些设置,请执行以下操作:
为新的错误日志文件创建目标目录。 以下示例创建新的
/tmp/logs
目录:sudo mkdir /tmp/logs
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/logs sudo chgrp mssql /tmp/logs
使用 mssql-conf 通过
set
命令更改默认错误日志文件名:sudo /opt/mssql/bin/mssql-conf set filelocation.errorlogfile /tmp/logs/errorlog
重启 SQL Server 服务:
sudo systemctl restart mssql-server
errorlog.numerrorlogs
设置允许你指定在循环日志之前所维护的错误日志数。
更改默认备份目录位置
使用 filelocation.defaultbackupdir
设置可更改生成备份文件的默认位置。 默认情况下,这些文件在 /var/opt/mssql/data
中生成。
若要设置新位置,请使用以下命令:
为新的备份文件创建目标目录。 以下示例创建新的
/tmp/backup
目录:sudo mkdir /tmp/backup
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/backup sudo chgrp mssql /tmp/backup
使用 mssql-conf 通过
set
命令更改默认备份目录:sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /tmp/backup
重启 SQL Server 服务:
sudo systemctl restart mssql-server
指定核心转储设置
如果某个 SQL Server 进程发生异常或故障,SQL Server 会创建内存转储。 捕获内存转储可能需要很长时间并占用大量空间。 若要保存资源并避免重复内存转储,可使用 coredump.disablecoredump
选项禁用自动转储捕获。
sudo /opt/mssql/bin/mssql-conf set coredump.disablecoredump <true or false>
当自动核心转储被禁用(coredump.disablecoredump
设置为 true
)时,用户仍然可以手动生成内存转储。
可使用两个选项控制 SQL Server 收集的内存转储类型:coredump.coredumptype
和 coredump.captureminiandfull
。 这两个选项与核心转储捕获的两个阶段相关。
第一阶段的捕获由 coredump.coredumptype
设置控制,此设置确定异常期间生成的转储文件类型。 第二阶段由 coredump.captureminiandfull
设置启用。 如果 coredump.captureminiandfull
设置为 true,则会生成 coredump.coredumptype
指定的转储文件,还会生成第二个小型转储。 将 coredump.captureminiandfull
设置为 false 可禁用第二次捕获尝试。
确定是否使用
coredump.captureminiandfull
设置捕获小型转储和完全转储。sudo /opt/mssql/bin/mssql-conf set coredump.captureminiandfull <true or false>
默认:
false
使用
coredump.coredumptype
设置指定转储文件的类型。sudo /opt/mssql/bin/mssql-conf set coredump.coredumptype <dump_type>
默认:
miniplus
下表列出了可能的
coredump.coredumptype
值。类型 说明 mini
Mini 是最小的转储文件类型。 它使用 Linux 系统信息确定进程中的线程和模块。 转储仅包含主机环境线程堆栈和模块。 不包含间接内存引用或全局变量。 miniplus
MiniPlus 与 mini 相似,但它包括更多内存。 它理解 SQLPAL 的内部机制和主机环境,可将下面的内存区域添加到转储:
- 各种全局变量
- 超过 64 TB 的所有内存
- - 在/proc/$pid/maps
中找到的所有命名区域
- 来自线程和堆栈的间接内存
- 线程信息,包括关联的线程环境块 (TEB) 和进程环境块 (PEB)
- 模块信息
- VMM 和 VAD 树filtered
Filtered 采用基于减法的设计,其中包括进程中的所有内存,除非专门排除某些内存。 此设计理解 SQLPAL 的内部机制和主机环境,从转储中排除某些区域。 full
Full 是完整的过程转储,包括 /proc/$pid/maps
中的所有区域。 这并非由coredump.captureminiandfull
设置控制。
版本
可以使用 set-edition
选项更改 SQL Server 的版本。 若要更改 SQL Server 的版本,首先需要停止 SQL Server 服务。 有关 Linux 上可用的 SQL Server 版本的详细信息,请参阅 SQL Server 版本。
高可用性
使用 hadr.hadrenabled
选项可在 SQL Server 实例上启用可用性组。 下面的命令通过将 hadr.hadrenabled
设置为 1 来启用可用性组。 必须重启 SQL Server,该设置才能生效。
sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server
有关如何将此项用于可用性组的信息,请参阅以下两篇文章。
设置本地审核目录
使用 telemetry.userrequestedlocalauditdirectory
设置可启用本地审核,并可设置创建本地审核日志的目录。
为新的本地审核日志创建目标目录。 以下示例创建新的
/tmp/audit
目录:sudo mkdir /tmp/audit
将目录的所有者和组更改为
mssql
用户:sudo chown mssql /tmp/audit sudo chgrp mssql /tmp/audit
使用
telemetry.userrequestedlocalauditdirectory
的set
命令以 root 身份运行 mssql-conf 脚本:sudo /opt/mssql/bin/mssql-conf set telemetry.userrequestedlocalauditdirectory /tmp/audit
重启 SQL Server 服务:
sudo systemctl restart mssql-server
有关详细信息,请参阅为 Linux 上的 SQL Server 配置使用情况和诊断数据收集。
更改 SQL Server 区域设置
language.lcid
设置可将 SQL Server 区域设置更改为任何支持的语言标识符 (LCID)。
以下示例将区域设置更改为法语 (1036):
sudo /opt/mssql/bin/mssql-conf set language.lcid 1036
重启 SQL Server 服务以应用更改:
sudo systemctl restart mssql-server
设置内存限制
memory.memorylimitmb
设置可控制 SQL Server 可用的物理内存量(以 MB 为单位)。 默认为物理内存的 80%,以防止内存不足 (OOM) 条件。
重要
memory.memorylimitmb
设置限制 SQL Server 进程的可用物理内存量。 最大服务器内存 (MB) 设置可用于调整 SQL Server 缓冲池的可用内存量,但永远不能超过可用于 SQL Server 的物理内存量。 有关最大服务器内存 (MB) 服务器配置选项的详细信息,请参阅服务器内存配置选项。
使用
memory.memorylimitmb
的set
命令以 root 身份运行 mssql-conf 脚本。 以下示例将 SQL Server 可用的内存更改为 3.25 GB (3,328 MB)。sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3328
重启 SQL Server 服务以应用更改:
sudo systemctl restart mssql-server
其他内存设置
内存设置提供以下选项。
选项 | 说明 |
---|---|
memory.disablememorypressure |
SQL Server 禁用内存压力。 值可以是 true 或 false (默认值)。 禁用内存压力会抑制 SQL Server 用来将其物理内存使用量限制为 memory.memorylimitmb 的信号,这会导致使用情况最终超出该限制。 |
memory.memory_optimized |
启用或禁用 SQL Server 内存优化功能 - 永久性内存文件启示、内存保护。 值可以为 true 或 false 。 |
memory.enablecontainersharedmemory |
仅适用于 SQL Server 容器。 使用此设置在 SQL Server 容器内启用共享内存。 有关详细信息,请参阅启用容器中的 VDI 备份和还原。 值可以是 true 或 false (默认值)。 |
配置 MSDTC
使用 network.rpcport
和 distributedtransaction.servertcpport
设置配置 Microsoft 分布式事务处理协调器 (MSDTC)。 要更改这些设置,请运行以下命令:
使用
network.rpcport
的set
命令以 root 身份运行 mssql-conf 脚本:sudo /opt/mssql/bin/mssql-conf set network.rpcport <rcp_port>
然后设置
distributedtransaction.servertcpport
设置:sudo /opt/mssql/bin/mssql-conf set distributedtransaction.servertcpport <servertcpport_port>
除了设置这些值之外,还必须为端口 135 配置路由和更新防火墙。 有关如何执行此操作的详细信息,请参阅如何在 Linux 上配置 Microsoft 分布式事务处理协调器 (MSDTC)。
可以使用 mssql-conf 的其他几项设置来监视 MSDTC 并对其进行故障排除。 下表简要描述了这些设置。 有关其使用的详细信息,请参阅 Windows 支持文章为 Windows 10 计算机上的 MS DTC 启用诊断跟踪了解详细信息。
选项 | 说明 |
---|---|
distributedtransaction.allowonlysecurerpccalls |
Configure secure only RPC calls for distributed transactions |
distributedtransaction.fallbacktounsecurerpcifnecessary |
为分布式事务配置“仅安全”的 RPC 调用 |
distributedtransaction.maxlogsize |
DTC 事务日志文件大小 (MB)。 默认值为 64 MB |
distributedtransaction.memorybuffersize |
存储跟踪的循环缓冲区大小。 此大小以 MB 为单位,默认为 10 MB |
distributedtransaction.servertcpport |
MSDTC rpc 服务器端口 |
distributedtransaction.trace_cm |
连接管理器中的跟踪 |
distributedtransaction.trace_contact |
跟踪联系人池和联系人 |
distributedtransaction.trace_gateway |
跟踪网关源 |
distributedtransaction.trace_log |
日志跟踪 |
distributedtransaction.trace_misc |
不能归入其他类别的跟踪 |
distributedtransaction.trace_proxy |
MSDTC 代理中生成的跟踪 |
distributedtransaction.trace_svc |
跟踪服务和 .exe 文件启动 |
distributedtransaction.trace_trace |
跟踪基础结构本身 |
distributedtransaction.trace_util |
跟踪从多个位置调用的实用工具例程 |
distributedtransaction.trace_xa |
XA 事务管理器 (XATM) 跟踪源 |
distributedtransaction.tracefilepath |
应存储跟踪文件的文件夹 |
distributedtransaction.turnoffrpcsecurity |
为分布式事务启用或禁用 RPC 安全性 |
接受机器学习服务 EULA
将机器学习 R 或 Python 包添加到数据库引擎需要接受 R 和 Python 的开源分发许可条款。 下表枚举了与 mlservices
EULA 相关的所有可用命令或选项。 对 R 和 Python 使用相同的 EULA 参数,具体取决于所安装的内容。
# For all packages: database engine and mlservices
# Setup prompts for mlservices EULAs, which you need to accept
sudo /opt/mssql/bin/mssql-conf setup
# Add R or Python to an existing installation
sudo /opt/mssql/bin/mssql-conf setup accept-eula-ml
# Alternative valid syntax
# Adds the EULA section to the INI and sets acceptulam to yes
sudo /opt/mssql/bin/mssql-conf set EULA accepteulaml Y
# Rescind EULA acceptance and removes the setting
sudo /opt/mssql/bin/mssql-conf unset EULA accepteulaml
还可以将接受 EULA 的内容直接添加到 mssql.conf 文件:
[EULA]
accepteula = Y
accepteulaml = Y
启用出站网络访问
默认情况下,SQL Server 机器学习服务功能中的 R、Python 和 Java 扩展的出站网络访问处于禁用状态。 若要启用出站请求,请使用 mssql-conf 设置 outboundnetworkaccess
布尔属性。
设置该属性后,重新启动 SQL Server Launchpad 服务以从 INI 文件中读取更新的值。 每当修改与扩展性相关的设置时,都会收到重启消息提醒。
# Adds the extensibility section and property.
# Sets "outboundnetworkaccess" to true.
# This setting is required if you want to access data or operations off the server.
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
# Turns off network access but preserves the setting
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 0
# Removes the setting and rescinds network access
sudo /opt/mssql/bin/mssql-conf unset extensibility.outboundnetworkaccess
还可以将 outboundnetworkaccess
直接添加到 mssql.conf 文件:
[extensibility]
outboundnetworkaccess = 1
更改适用于 Azure Key Vault 的 SQL Server 连接器的日志记录级别
在 SQL Server 2022 (16.x) CU 14 及更高版本中,Linux 上的 SQL Server 支持使用 Azure Key Vault 进行 TDE 可扩展密钥管理。 可以将日志记录级别设置为以下值之一:
Level | 说明 |
---|---|
0 (默认值) |
信息 |
1 |
错误 |
2 |
无日志 |
若要更改 SQL Server 连接器的日志记录级别,请使用下列示例:
sudo /opt/mssql/bin/mssql-conf set sqlconnector.logginglevel 1
有关详细信息,请参阅使用具有 SQL 加密功能的 SQL Server 连接器。
更改 TCP 端口
使用 network.tcpport
设置可更改 SQL Server 侦听连接的 TCP 端口。 默认情况下,此端口设置为 1433。 若要更改端口,请运行以下命令:
使用
network.tcpport
的set
命令以 root 身份运行 mssql-conf 脚本:sudo /opt/mssql/bin/mssql-conf set network.tcpport <new_tcp_port>
重启 SQL Server 服务:
sudo systemctl restart mssql-server
连接到 SQL Server 后,必须在主机名或 IP 地址后用逗号 (,) 指定自定义端口。 例如,要使用 sqlcmd 进行连接,则需使用以下命令:
sqlcmd -S localhost,<new_tcp_port> -U test -P test
指定 TLS 设置
以下选项为在 Linux 上运行的 SQL Server 实例配置 TLS。
选项 | 说明 |
---|---|
network.forceencryption |
如果为 1,则 SQL Server 强制加密所有连接。 默认情况下,此选项为 0。 |
network.tlscert |
SQL Server 用于 TLS 的证书文件的绝对路径。 示例:/etc/ssl/certs/mssql.pem 证书文件必须可由 mssql 帐户访问。 Microsoft 建议使用 chown mssql:mssql <file>; chmod 400 <file> 限制对文件的访问。 |
network.tlskey |
SQL Server 用于 TLS 的专用密钥文件的绝对路径。 示例:/etc/ssl/private/mssql.key 证书文件必须可由 mssql 帐户访问。 Microsoft 建议使用 chown mssql:mssql <file>; chmod 400 <file> 限制对文件的访问。 |
network.tlsprotocols |
SQL Server 允许的 TLS 协议列表(以逗号分隔)。 SQL Server 始终尝试协商允许的最强协议。 如果客户端不支持任何允许的协议,SQL Server 将拒绝连接尝试。 为实现兼容性,默认情况下允许所有支持的协议(1.2、1.1、1.0)。 如果客户端支持 TLS 1.2,Microsoft 建议仅允许 TLS 1.2。 |
network.tlsciphers |
指定 SQL Server 允许将哪些密码用于 TLS。 必须按照 OpenSSL 的密码列表格式设置此字符串的格式。 通常不需要更改此选项。 默认情况下,允许使用以下密码: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA |
network.kerberoskeytabfile |
Kerberos keytab 文件的路径 |
有关使用 TLS 设置的示例,请参阅加密与 Linux 上的 SQL Server 的连接。
网络设置
请参阅教程:对 Linux 上的 SQL Server 使用 Active Directory 身份验证,以获取有关在 Linux 上的 SQL Server 中使用 Active Directory 身份验证的全面信息。
以下选项是可使用 mssql-conf 配置的其他网络设置。
选项 | 说明 |
---|---|
network.disablesssd |
禁用查询 SSSD 来获取 Active Directory 帐户信息,默认为 LDAP 调用。 值可以为 true 或 false 。 |
network.enablekdcfromkrb5conf |
允许从 krb5.conf 查找 KDC 信息。 值可以为 true 或 false 。 |
network.forcesecureldap |
强制使用 LDAPS 联系域控制器。 值可以为 true 或 false 。 |
network.ipaddress |
传入连接的 IP 地址。 |
network.kerberoscredupdatefrequency |
检查需要更新的 kerberos 凭据之间的时间(以秒为单位)。 值是一个整数。 |
network.privilegedadaccount |
用于 Active Directory 身份验证的特权 Active Directory 用户。 值为 <username> 。 有关详细信息,请参阅教程:对 Linux 上的 SQL Server 使用 Active Directory 身份验证 |
uncmapping |
将 UNC 路径映射到本地路径。 例如,sudo /opt/mssql/bin/mssql-conf set uncmapping //servername/sharename /tmp/folder 。 |
ldaphostcanon |
设置 OpenLDAP 是否应在绑定步骤期间规范主机名。 值可以为 true 或 false 。 |
启用或禁用跟踪标志
使用 traceflag
选项可启用或禁用 SQL Server 服务启动的跟踪标志。 若要启用/禁用跟踪标志,请使用以下命令:
使用以下命令启用跟踪标志。 例如,对于跟踪标志 1234:
sudo /opt/mssql/bin/mssql-conf traceflag 1234 on
可以通过单独指定跟踪标志来启用多个跟踪标志:
sudo /opt/mssql/bin/mssql-conf traceflag 2345 3456 on
同样,可以通过指定跟踪标志并添加
off
参数来禁用一个或多个启用的跟踪标志:sudo /opt/mssql/bin/mssql-conf traceflag 1234 2345 3456 off
重启 SQL Server 服务以应用更改:
sudo systemctl restart mssql-server
删除设置
要取消设置使用 mssql-conf set
进行的任何设置,请使用 unset
选项和设置名称调用 mssql-conf。 这将清除设置,有效地将其重置为默认值。
以下示例清除
network.tcpport
选项。sudo /opt/mssql/bin/mssql-conf unset network.tcpport
重启 SQL Server 服务。
sudo systemctl restart mssql-server
查看当前设置
要查看任何已配置的设置,请运行以下命令以输出 mssql.conf
文件的内容:
sudo cat /var/opt/mssql/mssql.conf
此文件中未显示的所有设置均使用其默认值。 下一部分提供示例 mssql.conf
文件。
查看各种选项
若要查看可以使用 mssql-conf 实用工具配置的各种选项,请运行 help
命令:
sudo /opt/mssql/bin/mssql-conf --help
结果提供各种配置选项和每个设置的简短说明。
mssql.conf format
以下 /var/opt/mssql/mssql.conf
文件提供了每个设置的示例。 可以根据需要使用此格式手动更改 mssql.conf
文件。 如果手动更改文件,则必须在应用更改之前重启 SQL Server。 要将 mssql.conf
文件与 Docker 配合使用,必须让 Docker 保留你的数据。 首先将完整的 mssql.conf
文件添加到主机目录,然后运行容器。 在为 Linux 上的 SQL Server 配置使用情况和诊断数据收集中有一个实例。
[EULA]
accepteula = Y
[coredump]
captureminiandfull = true
coredumptype = full
[filelocation]
defaultbackupdir = /var/opt/mssql/data/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/data/
[hadr]
hadrenabled = 0
[language]
lcid = 1033
[memory]
memorylimitmb = 4096
[network]
forceencryption = 0
ipaddress = 10.192.0.0
kerberoskeytabfile = /var/opt/mssql/secrets/mssql.keytab
tcpport = 1401
tlscert = /etc/ssl/certs/mssql.pem
tlsciphers = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
tlskey = /etc/ssl/private/mssql.key
tlsprotocols = 1.2,1.1,1.0
[sqlagent]
databasemailprofile = default
errorlogfile = /var/opt/mssql/log/sqlagentlog.log
errorlogginglevel = 7
[telemetry]
customerfeedback = true
userrequestedlocalauditdirectory = /tmp/audit
[traceflag]
traceflag0 = 1204
traceflag1 = 2345
traceflag = 3456
[EULA]
accepteula = Y
accepteulaml = Y
[coredump]
captureminiandfull = true
coredumptype = full
[distributedtransaction]
servertcpport = 51999
[filelocation]
defaultbackupdir = /var/opt/mssql/data/
defaultdatadir = /var/opt/mssql/data/
defaultdumpdir = /var/opt/mssql/data/
defaultlogdir = /var/opt/mssql/data/
[hadr]
hadrenabled = 0
[language]
lcid = 1033
[memory]
memorylimitmb = 4096
[network]
forceencryption = 0
ipaddress = 10.192.0.0
kerberoskeytabfile = /var/opt/mssql/secrets/mssql.keytab
rpcport = 13500
tcpport = 1401
tlscert = /etc/ssl/certs/mssql.pem
tlsciphers = ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA
tlskey = /etc/ssl/private/mssql.key
tlsprotocols = 1.2,1.1,1.0
[sqlagent]
databasemailprofile = default
errorlogfile = /var/opt/mssql/log/sqlagentlog.log
errorlogginglevel = 7
[telemetry]
customerfeedback = true
userrequestedlocalauditdirectory = /tmp/audit
[traceflag]
traceflag0 = 1204
traceflag1 = 2345
traceflag = 3456
相关内容
参与编辑 SQL 文档
你是否知道你可以自行编辑 SQL 内容? 你如果这样做,不仅可以帮助改进我们的文档,还可以获得页面贡献者的殊荣。
有关详细信息,请参阅如何参与 SQL Server 文档编辑