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。
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
使用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用戶和組。
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
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
若是一個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
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
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
如下選項爲運行在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