合 使用 mssql-conf 工具配置 Linux 上的 SQL Server
Tags: LinuxMSSQLSQL Servermssql-conf
- 简介
- 使用提示
- 启用 SQL Server 代理
- 为 Linux 上的 SQL Server 设置默认数据库邮件配置文件
- SQL 代理错误日志
- 配置 Azure Active Directory 身份验证
- 更改默认 Azure AD 证书路径
- Azure AD 配置选项
- 配置 Windows Active Directory 身份验证
- 更改 SQL Server 排序规则
- 配置客户反馈
- 更改默认数据或日志目录位置
- 更改默认的 master 数据库文件目录位置
- 更改 master 数据库文件的名称
- 更改默认转储目录位置
- 更改默认的错误日志文件目录位置
- 更改默认备份目录位置
- 指定核心转储设置
- 版本
- 高可用性
- 设置本地审核目录
- 更改 SQL Server 区域设置
- 设置内存限制
- 其他内存设置
- 配置 MSDTC
- 接受 MLServices EULA
- 启用出站网络访问
- 更改 TCP 端口
- 指定 TLS 设置
- 网络设置
- 启用或禁用跟踪标志
- 删除设置
- 查看当前设置
- 查看各种选项
- mssql.conf format
- 后续步骤
- 参考
简介
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 并对其进行故障排除。 |
MLServices EULA | 对于 mlservices 包,接受 R 和 Python EULA。 仅适用于 SQL Server 2019 (15.x)。 |
网络设置 | SQL Server 的其他网络设置。 |
outboundnetworkaccess | 为 mlservices R、Python 和 Java 扩展启用出站网络访问。 |
TCP 端口 | 更改 SQL Server 侦听连接的端口。 |
TLS | 配置传输级别安全性。 |
跟踪标志 | 设置服务要使用的跟踪标志。 |
提示
还可以使用环境变量配置其中某些设置。 有关详细信息,请参阅使用环境变量配置 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 代理。12[sqlagent]enabled = true可以使用以下命令部署容器:
1234docker 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 代理:
1sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true重启 SQL Server 服务:
1sudo systemctl restart mssql-server
为 Linux 上的 SQL Server 设置默认数据库邮件配置文件
通过 sqlagent.databasemailprofile
,可为电子邮件警报设置默认的 DB 邮件配置文件。
1 | sudo /opt/mssql/bin/mssql-conf set sqlagent.databasemailprofile <profile_name> |
SQL 代理错误日志
通过 sqlagent.errorlogfile
和 sqlagent.errorlogginglevel
设置,可分别设置 SQL 代理日志文件路径和日志记录级别。
1 | sudo /opt/mssql/bin/mssql-conf set sqlagent.errorfile <path> |
SQL 代理日志记录级别是位掩码值,等于:
- 1 = 错误
- 2 = 警告
- 4 = 信息
如果要捕获所有级别,请使用 7
作为值。
1 | sudo /opt/mssql/bin/mssql-conf set sqlagent.errorlogginglevel <level> |
配置 Azure Active Directory 身份验证
从 SQL Server 2022 (16.x) 开始,可以为 SQL Server 配置 Azure Active Directory (Azure AD)。 若要配置 Azure AD,必须在安装 SQL Server 之后安装用于 SQL Server 的 Azure 扩展。 有关如何配置 Azure AD 的信息,请参阅教程:设置适用于 SQL Server 的 Azure Active Directory 身份验证。
更改默认 Azure AD 证书路径
默认情况下,Azure AD 证书文件存储在 /var/opt/mssql/aadsecrets/
中。 如果使用证书存储或加密驱动器,则可以更改此路径。 若要更改路径,可以使用以下命令:
1 | sudo /opt/mssql/bin/mssql-conf set network.aadcertificatefilepath /path/to/new/location.pfx |
在前面的示例中,/path/to/new/location.pfx
是首选路径,包括证书名称。
用于 SQL Server 的 Azure 扩展下载的 Azure AD 身份验证的证书存储在此位置。 你无法将其更改为 /var/opt/mssql/secrets
。
备注
安装 SQL Server 后,虽然可以随时更改默认的 Azure AD 证书路径,但必须在启用 Azure AD 之前更改。
Azure AD 配置选项
Azure AD 身份验证将以下选项用于 Linux 上运行的 SQL Server 实例。
警告
Azure AD 参数由用于 SQL Server 的 Azure 扩展配置,不应手动重新配置。 此处列出的选项仅供参考。
选项 | 说明 |
---|---|
network.aadauthenticationendpoint | Azure AD 身份验证的终结点 |
network.aadcertificatefilepath | 用于向 Azure AD 进行身份验证的证书文件的路径 |
network.aadclientcertblacklist | Azure AD 客户端证书阻止列表 |
network.aadclientid | Azure AD 客户端 GUID |
network.aadfederationmetadataendpoint | Azure AD 联合元数据的终结点 |
network.aadgraphapiendpoint | Azure AD Graph API 的终结点 |
network.aadgraphendpoint | Azure AD Graph 终结点: |
network.aadissuerurl | Azure AD 颁发者 URL |
network.aadmsgraphendpoint | Azure AD MS Graph 终结点 |
network.aadonbehalfofauthority | 代表授权机构的 Azure AD |
network.aadprimarytenant | Azure AD 主租户 GUID |
network.aadsendx5c | Azure AD Send X5C |
network.aadserveradminname | 将作为 sysadmin 的 Azure AD 帐户的名称 |
network.aadserveradminsid | 将作为 sysadmin 的 Azure AD 帐户的 SID |
network.aadserveradmintype | 将作为 sysadmin 的 Azure AD 帐户的类型 |
network.aadserviceprincipalname | Azure AD 服务主体名称 |
network.aadserviceprincipalnamenoslash | Azure AD 服务主体名称(无斜杠) |
network.aadstsurl | Azure AD STS URL |
配置 Windows Active Directory 身份验证
setup-ad-keytab
选项可用于创建密钥表,但必须创建了用户和服务主体名称 (SPN) 才能使用此选项。 Active Directory 实用工具 adutil 可用于创建用户、SPN 和密钥表。
有关使用 setup-ad-keytab
的选项,请运行以下命令:
1 | 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
选项并按照提示进行操作:1sudo /opt/mssql/bin/mssql-conf set-collationmssql-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
来关闭客户反馈。1sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false重启 SQL Server 服务:
1sudo systemctl restart mssql-server
有关详细信息,请参阅 Linux 上的 SQL Server 的客户反馈 和 SQL Server 隐私声明。
更改默认数据或日志目录位置
使用 filelocation.defaultdatadir
和 filelocation.defaultlogdir
设置可更改创建新数据库和日志文件的位置。 默认情况下,此位置是 /var/opt/mssql/data
。 若要更改这些设置,请使用以下步骤:
为新的数据库数据和日志文件创建目标目录。 以下示例创建新的
/tmp/data
目录:1sudo mkdir /tmp/data将目录的所有者和组更改为
mssql
用户:12sudo chown mssql /tmp/datasudo chgrp mssql /tmp/data使用 mssql-conf 通过
set
命令更改默认数据目录:1sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /tmp/data重启 SQL Server 服务:
1sudo systemctl restart mssql-server现在,为新数据库创建的所有数据库文件都将存储在此新位置。 如果要更改新数据库的日志文件 (.ldf) 位置,可以使用下面的
set
命令:1sudo /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
目录:1sudo mkdir /tmp/masterdatabasedir将目录的所有者和组更改为
mssql
用户:12sudo chown mssql /tmp/masterdatabasedirsudo chgrp mssql /tmp/masterdatabasedir使用 mssql-conf 通过
set
命令更改主数据和日志文件的默认master
数据库目录:12sudo /opt/mssql/bin/mssql-conf set filelocation.masterdatafile /tmp/masterdatabasedir/master.mdfsudo /opt/mssql/bin/mssql-conf set filelocation.masterlogfile /tmp/masterdatabasedir/mastlog.ldf备注
除了移动主数据和日志文件外,此操作还将移动所有其他系统数据库的默认位置。
停止 SQL Server 服务:
1sudo systemctl stop mssql-server移动
master.mdf
和mastlog.ldf
文件:12sudo mv /var/opt/mssql/data/master.mdf /tmp/masterdatabasedir/master.mdfsudo mv /var/opt/mssql/data/mastlog.ldf /tmp/masterdatabasedir/mastlog.ldf启动 SQL Server 服务:
1sudo 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 服务:
1sudo systemctl stop mssql-server使用 mssql-conf 通过
set
命令更改master
数据和日志文件的预期master
数据库名称:12sudo /opt/mssql/bin/mssql-conf set filelocation.masterdatafile /var/opt/mssql/data/masternew.mdfsudo /opt/mssql/bin/mssql-conf set filelocation.mastlogfile /var/opt/mssql/data/mastlognew.ldf重要
只能在 SQL Server 成功启动后更改
master
数据库和日志文件的名称。 在初始运行之前,SQL Server 会要求文件命名为master.mdf
和mastlog.ldf
。更改
master
数据库数据和日志文件的名称:12sudo mv /var/opt/mssql/data/master.mdf /var/opt/mssql/data/masternew.mdfsudo mv /var/opt/mssql/data/mastlog.ldf /var/opt/mssql/data/mastlognew.ldf启动 SQL Server 服务:
1sudo systemctl start mssql-server
更改默认转储目录位置
使用 filelocation.defaultdumpdir
设置可更改每当系统崩溃时生成内存和 SQL 转储的默认位置。 默认情况下,这些文件在 /var/opt/mssql/log
中生成。
若要设置新位置,请使用以下命令:
为新的转储文件创建目标目录。 以下示例创建新的
/tmp/dump
目录:1sudo mkdir /tmp/dump将目录的所有者和组更改为
mssql
用户:12sudo chown mssql /tmp/dumpsudo chgrp mssql /tmp/dump使用 mssql-conf 通过
set
命令更改默认数据目录:1sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /tmp/dump重启 SQL Server 服务:
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!