在Linux上使用mssql-conf工具配置SQL Server 2017

mssql-conf是在Linux上安裝SQL Server 2017後的一個配置腳本。你能夠使用這個實用工具設置如下參數:sql


Agent數據庫

啓用SQL Server代理bash

Collation服務器

設置一個新的排序規則tcp

Customer feedbackide

選擇是否發送反饋給微軟函數

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
相關文章
相關標籤/搜索