mssql-conf是在Linux上安装SQL Server 2017后的一个配置脚本。你可以使用这个实用工具设置以下参数:

Agent

启用SQL Server代理

Collation

设置一个新的排序规则

Customer feedback

选择是否发送反馈给微软

Database Mail Profile

设置默认数据库邮件配置

Default data directory

修改新的数据文件的默认路径

Default log directory

修改新的日志文件的默认路径

Default master database file directory

修改master数据库的默认路径

Default master database file name

修改master数据库文件的名字

Default dump directory

修改新的内存DUMP和其他排错文件的默认路径

Defalut error log directory

修改新的SQL Server错误日志文件、默认跟踪、系统健康会话扩展事件和Hekaton会话扩展事件文件

Default backup directory

修改新的备份文件的默认路径

Dump type

选择内存DUMP文件收集的DUMP类型

High availability

启用可用性组

Local Audit directory

配置一个添加本地审核文件的目录

Locale

配置SQL Server使用的地区(配置语言环境)

Memory limit

配置SQL Server内存限制

TCP port

修改SQL Server连接监听的端口

TLS

配置TLS(Transport Level Security)

Traceflags

设置服务使用的跟踪标识

使用贴士:

  • 对于AlwaysOn可用性组和共享磁盘集群,总是对每个节点做相同的配置修改。

  • 对于共享磁盘集群,不要尝试通过重启mssql-server服务应用修改。SQL Server作为一个应用运行。相应的,将资源离线然后上线。

  • 你可以指定完整路径运行mssql-conf:/opt/mssql/bin/mssql-conf。如果你导航到该路径,可以在当前路径上下文下运行mssql-conf:./mssql-conf。

启用SQL Server代理

sqlagent.enabled设置启用SQL Server代理。默认,SQL Server代理是禁用的。如果sqlagent.enabled没有出现在mssql.conf配置文件中,那么SQL Server内部认为SQL Server代理是禁用的。

按如下步骤修改配置:

1. 启用SQL Server代理:

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true

2. 重启SQL Server服务:

sudo systemctl restart mssql-server

修改SQL Server排序规则

使用set-collation选项修改排序规则为任何支持的排序规则。

1. 首先备份实例上任何用户数据库。

2. 使用sp_detach_db分离用户数据库。

3. 运行set-collation选项并遵从提示:

sudo /opt/mssql/bin/mssql-conf set-collation

4. Mssql-conf使用工具将尝试修改为指定的排序规则,并重启服务。如果有任何错误,它将回滚排序规则到之前的值。

5. 恢复用户数据库备份。

对于支持的排序规则列表,运行sys.fn_helpcollations函数:

SELECT Name from sys.fn_helpcollations()

配置客户反馈

telemetry.customerfeedback设置修改是否SQL Server发送反馈给微软。默认,对于所有版本该值设置为true。运行如下命令,修改该值:

重要:你不能关闭免费版本的客户反馈,Express和Developer。

1. 对于telemetry.customerfeedback选项,以root用户通过set命令运行脚本mssql-conf。以下示例通过设置false来关闭客户反馈。

sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false

2. 重启SQL Server服务:

sudo systemctl restart mssql-server

修改默认数据和日志目录位置

filelocation.defaultdatadir和filelocation.defaultlogdir设置修改新的数据和日志文件创建的位置。默认,这个位置是/var/opt/mssql/data。使用如下步骤,修改该配置:

1. 对于新的数据和日志文件创建目标目录。以下示例创建一个新的/tmp/data目录:

sudo mkdir /tmp/data

2. 修改该目录的所有者和组为mssql:

sudo chown mssql /tmp/data
sudo chgrp mssql /tmp/data

3. 使用mssql-conf脚本执行set命令修改默认数据目录:

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /tmp/data

4. 重启SQL Server服务:

sudo systemctl restart mssql-server

5. 现在对于新创建的数据库的数据文件将存储在新的位置。如果你想修改新数据库的日志文件位置,你可以使用以下set命令:

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /tmp/log

6. 该命令也假设/tmp/log目录存在,并且隶属于mssql用户和组。

修改默认master数据库文件目录位置

filelocation.masterdatafile和filelocation.masterlogfile设置修改SQL Server引擎查找master数据库文件的位置。默认,这个位置是/var/opt/mssql/data。

通过如下步骤来修改这些设置:

1. 对于新的错误日志文件创建目标目录。以下示例创建一个新的/tmp/masterdatabasedir目录:

sudo mkdir /tmp/masterdatabasedir

2. 修改目录的所有者和组为mssql:

sudo chown mssql /tmp/masterdatabasedir
sudo chgrp mssql /tmp/masterdatabasedir

3. 对于master数据和日志文件,使用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

4. 停止SQL Server服务:

sudo systemctl stop mssql-server

5. 移动master.mdf和masterlog.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

6. 启动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数据库文件的位置。默认位置是/var/opt/mssql/data。使用如下步骤修改这些设置:

1. 停止SQL Server服务:

sudo systemctl stop mssql-server

2. 使用mssql-conf脚本的set命令修改指定的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

3. 修改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

4. 启动SQL Server服务:

sudo systemctl start mssql-server

修改默认的DUMP目录位置

filelocation.defalutdumpdir设置修改当遇到故障时内存和SQL DUMP生成的默认位置。默认,这些文件生成在/var/log/mssql/log目录。

使用如下命令来配置新的位置:

1. 创建新的DUMP文件的目标目录。以下示例创建一个新的/tmp/dump目录:

sudo mkdir /tmp/dump

2. 修改该目录的所有者和组为mssql:

sudo chown mssql /tmp/dump
sudo chgrp mssql /tmp/dump

3. 使用mssql-conf脚本的set命令修改默认数据目录:

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdumpdir /tmp/dump

4. 重启SQL Server服务:

sudo systemctl restart mssql-server

修改默认错误日志目录位置

filelocation.errorlogfile设置修改新的错误日志、默认Profiler跟踪、系统健康会话扩展事件和Hekaton会话扩展事件文件创建的位置。默认位置是/var/opt/mssql/log。SQL错误日志设置的目录成为其他日志的默认目录。

修改这些设置:

1. 对新的错误日志文件创建目标目录。以下示例创建一个新的/tmp/logs目录:

sudo mkdir /tmp/logs

2. 修改目录的所有者和组为mssql:

sudo chown mssql /tmp/logs

sudo chgrp mssql /tmp/logs

3. 使用mssql-conf脚本的set命令修改默认错误日志文件名:

sudo /opt/mssql/bin/mssql-conf set filelocation.errorlogfile /tmp/logs/errorlog

4. 重启SQL Server服务:

sudo systemctl restart mssql-server

修改默认备份目录位置

filelocation.defultbackupdir设置修改备份文件生成的位置。默认,这些文件产生于/var/opt/mssql/data。

使用如下命令来配置这个新位置:

1. 对于新的备份文件创建目标目录。以下示例创建一个新的/tmp/backup目录:

sudo mkdir /tmp/backup

2. 修改目录的所有者和组为mssql:

sudo chown mssql /tmp/backup
sudo chgrp mssql /tmp/backup

3. 使用mssql-conf脚本的set命令修改默认备份目录:

sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /tmp/backup

4. 重启SQL Server服务:

sudo systemctl restart mssql-server

指定核心DUMP设置

如果一个SQL Server进程发生意外,SQL Server创建一个内存DUMP。

有两个选项用于控制SQL Server收集的内存DUMP的类型:coredump.coredumptype和coredump.captureminiandfull。这些关系到核心DUMP捕获的两个阶段。

第一个阶段捕获通过coredump.coredumptype设置来控制,决定了在发生意外时DUMP文件产生的类型。当coredump.captureminiandfull设置时第二个阶段启用。如果coredump.captureminiandfull设置为true,被coredump.coredumptype指定的DUMP文件生成,并生成了一个微型DUMP。设置coredump.captureminiandfull为false禁止第二个捕获尝试。

1. 使用coredump.captureminiandfull设置决定是否捕获微型和完整DUMP。

sudo /opt/mssql/bin/mssql-conf set coredump.captureminiandfull <true or false>

默认值为false

2. 使用coredump.coredumptype设置指定DUMP文件的类型。

sudo /opt/mssql/bin/mssql-conf set coredump.coredumptype <dump_type>

默认值为miniplus

以下列表是可能的coredump.coredumptype的值:

类型

描述

mini

Mini是最小的DUMP文件类型。它使用Linux系统信息决定进程里的线程和模块。DUMP只包含主机环境线程栈和模块。它不包含间接内存参照或全局变量。

miniplus

Miniplus类似于mini,但是它包含其他内存。它理解SQLPAL和主机环境的内幕,添加内存区域到DUMP:

--各种全局变量

--64TB以上内存

--在/proc/$pid/maps发现的所有命名区域

--从线程到栈的间接内存

--线程信息

--相关的Teb’s和Peb’s

--模块信息

--VMM和VAD数

filtered

Filtered使用基于减法的设计进程中的所有内存位置都包含,除非专门排除。该设计理解SQLPAL的内幕和主机环境,从DUMP排除特定区域。

full

Full是一个位于/proc/$pid/maps的完整进程DUMP包含所有区域。它不受coredump.captureminiandfull设置的控制。

设置默认数据库邮件配置

Sqlpagent.databasemailprofile允许你对于邮件告警设置默认数据库邮件配置。

sudo /opt/mssq/bin/mssql-conf set sqlagent.databasemailprofile <profile_name>

高可用性

hadr.hadrenabled选项在SQL Server实例上启用可用性组。以下命令通过设置hadr.hardenabled为1启用可用性组。你必须重启SQL Server使配置生效。

sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1
sudo systemctl restart mssql-server

设置本地审核目录

telemetry.userrequestedlocalauditdirectory设置启用本地审核,让你本地审核日志创建的目录。

1. 对于新的本地审核日志创建目标目录。以下示例创建一个/tmp/audit目录:

sudo mkdir /tmp/audit

2. 修改所有者和组为mssql:

sudo chown mssql /tmp/audit
sudo chgrp mssql /tmp/audit

3. 对于telemetry.userrequestedlocalauditdirectory,以root运行mssql-conf脚本的set命令:

sudo /opt/mssql/bin/mssql-conf set telemetry.userrequestedlocalauditdirectory /tmp/audit

4. 重启SQL Server服务:

sudo systemctl restart mssql-server

修改SQL Server本地化

Language.lcid设置修改SQL Server本地化为任何支持的语言标识(LCID)。

1. 以下示例修改本地化为法语(1036):

sudo /opt/mssql/bin/mssql-conf set language.lcid 1036

2. 重启SQL Server服务来应用修改:

sudo systemctl restart mssql-server

设置内存限制

Memory.memorylimitmb设置控制SQL Server可用物理内存数量。默认是物理内存的80%。

1. 对memory.memorylimitmb以root运行mssql-conf脚本的set命令。以下示例修改可用内存为3.25GB(3328MB)。

sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3328

2. 重启SQL Server服务来应用修改:

sudo systemctl restart mssql-server

修改TCP端口

Network.tcpport设置修改SQL Server连接监听的TCP端口。默认,该端口设置为1433。运行如下命令修改这个端口:

1. 对于network.tcpport运行mssql-conf脚本的set命令:

sudo /opt/mssql/bin/mssql-conf set network.tcpport <new_tcp_port>

2. 重启SQL Server服务:

sudo systemctl restart mssql-server

3. 当现在连接到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帐户访问。微软推荐使用chown mssql:mssql <file>; chmod 400 <file>限制访问文件。

Network.tlskey

SQL Server用于TLS的私钥文件的完整路径。例如:/etc/ssl/private/mssql.key。证书必需通过mssql帐户访问。微软推荐使用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,微软推荐只允许TLS 1.2。

Network.tlsciphers

指定对于TLS,SQL Server允许的密码。该字符串必需以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文件路径

启用/禁用跟踪标志

Traceflag选项对于SQL Server服务启动启用和禁用跟踪标志。使用如下命令启用/禁用跟踪标志:

1. 使用如下命令启用启用跟踪标志。例如,对于跟踪标志1234:

sudo /opt/mssql/bin/mssql-conf traceflag 1234 on

2. 你可以通过分别制定它们来启用多个跟踪标志:

sudo /opt/mssql/bin/mssql-conf traceflag 2345 3456 on

3. 以类似的方式,你可以通过制定它们并添加off参数来禁用一个或多个启用的跟踪标志:

sudo /opt/mssql/bin/mssql-conf traceflag 1234 2345 3456 off

4. 重启SQL Server服务来应用修改:

sudo systemctl restart mssql-server

移除一个设置

为了移除使用mssql-conf set的设置,使用unset选项和设置名称调用mssql-conf。它清理设置,有效的设为默认值。

1. 以下示例清理network.tcpport选项。

sudo /opt/mssql/bin/mssql-conf unset network.tcpport

2. 重启SQL Server服务。

sudo systemctl restart mssql-server

查看当前设置

为了查看任何配置设置,运行如下脚本输出mssql.conf文件的内容:

sudo cat /var/opt/mssql/mssql.conf

注意,任何使用默认值的设置不会显示在这个文件。

Mssql.conf格式

以下/var/opt/mssql/mssql.conf文件提供了对每个设置的一个示例。你可以使用这个格式手工按需修改mssql.conf文件。如果手工修改这个文件,你必需重启SQL Server服务来应用。为了在Docker使用mssql.conf文件,你必需有Docker持久化你的数据。首先添加一个完整的mssql.conf文件到你的主机目录并运行这个容器。

[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

在Linux上使用mssql-conf工具配置SQL Server 2017的更多相关文章

  1. 使用unidac 在linux 上无驱动直接访问MS SQL SERVER

    随着delphi 10.2 开始了对Linux 的重新支持.devart 也迅速的发布了unidac 7.0, 最大的特性就是支持linux和MongoDB. 并有了其他更新: In this rel ...

  2. centos7安装配置sql server 2017 linux教程

    一.安装教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker https://docs.mic ...

  3. Linux 上的 SQL Server 2017 的安装指南

    一:介绍背景 微软在2016年 3 月首次对外宣布了 Linux 版的 SQL Server,并于2017年 7 月发布了首个公开 RC 版.前几日在美国奥兰多召开的微软 Ignite 2017 大会 ...

  4. Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...

  5. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  6. xsos:一个在Linux上阅读SOSReport的工具

    xsos:一个在Linux上阅读SOSReport的工具 时间 2019-05-23 14:36:29  51CTO 原文  http://os.51cto.com/art/201905/596889 ...

  7. Linux 上的数据可视化工具

    Linux 上的数据可视化工具 5 种开放源码图形化工具简介 Linux® 上用来实现数据的图形可视化的应用程序有很多,从简单的 2-D 绘图到 3-D 制图,再到科学图形编程和图形模拟.幸运的是,这 ...

  8. 在Linux上安装Elasticsearch Head工具.md

    在Linux上安装Elasticsearch Head工具 1.修改elasticsearch的参数 编辑elasticsearch的配置文件elasticsearch.yml $ vim /data ...

  9. Linux上安装jdk1.8和配置环境变量

    前言 Linux 上安装jdk1.8 和配置环境变量,参考相关文档,本人在此总结,操作归纳如下. 第一步:创建jdk安装目录(该/usr/local/src 目录是空的,最好把我们自己下载的放到这,容 ...

随机推荐

  1. react的模型:react是如何工作的?

    1.jsx:语法模型,语句构建模型: 2.组件:集合模型,组件管理: 3.vdom:分层模型.渲染管理模型: 4.flux:管道模型.数据模型,状态管理模型: 整体上是一个UI系统从上到下的构建: f ...

  2. C# 用Singleton类构建多线程单例模式

    public sealed class Singleton    {        private static volatile Singleton uniqueInstance;        p ...

  3. C# vb .NET识别读取QR二维码

    二维码比条形码具有更多优势,有些场合使用二维码比较多,比如支付.那么如何在C#,.Net平台代码里读取二维码呢?答案是使用SharpBarcode! SharpBarcode是C#快速高效.准确的条形 ...

  4. python 进程和线程-进程和线程的比较以及分布式进程

    进程和线程的比较 参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017631469467456 我们介绍了多进程和多线程,这是实现多任 ...

  5. Windows 计算机取证

    windows安全账号管理(SAM) Unveilling The Password Encryption Process Under Windows –a Practical Attack 上述这篇 ...

  6. mybatis中集成sharing-jdbc采坑

    1. mybatis中集成sharing-jdbc采坑 1.1. 错误信息 Caused by: org.apache.ibatis.binding.BindingException: Invalid ...

  7. Java中 / 和 %

    Java中 / 和 % 每天积累一些 Java 的知识点,补充自己的不足. 今天在刷面试题的碰到 % ,一下子还真想不起来这个运算符的作用,赶紧重温一下,这里我写了个小代码来体现 / 和 % 的区别. ...

  8. elasticsearch查询篇索引映射文档数据准备

    elasticsearch查询篇索引映射文档数据准备 我们后面要讲elasticsearch查询,先来准备下索引,映射以及文档: 我们先用Head插件建立索引film,然后建立映射 POST http ...

  9. flask 简单示例

    flask import flask from flask import jsonify from flask import request # 要获取到请求参数的话,就要导入这个模块 ''' 创建接 ...

  10. jmeter+jenkins配置过程

    目录 前置条件 脚本规划 讲解非GUI方式运行脚本 在jenkins里面新建项目 在Jmeter的jtl结果文件转换成html页面 邮件.配置 前置条件 1.jmeter安装好并已配置好环境变量,可正 ...