您好,登錄后才能下訂單哦!
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。
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。