使用 mssql-conf 工具在 Linux 上設定 SQL Server

適用于:SQL Server (所有支援的版本) - Linux

mssql-conf 是一個設定指令碼,會使用適用於 Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Ubuntu 的 SQL Server 2017 進行安裝。 其會修改儲存設定值的 mssql.conf 檔案。 您可以使用 mssql-conf 公用程式來設定下列參數:

參數 描述
代理程式 啟用 SQL Server Agent。
使用 Windows 進行驗證 Windows Server Active Directory驗證的設定。
定序 為 Linux 上的 SQL Server 設定新的定序。
客戶意見反應 選擇 SQL Server 是否要將意見反應傳送給 Microsoft。
Database Mail 設定檔 為 Linux 上的 SQL Server 設定預設 Database Mail 設定檔。
預設資料目錄 變更新 SQL Server 資料庫資料檔案 (.mdf) 的預設目錄。
預設記錄目錄 變更新 SQL Server 資料庫記錄 (.ldf) 檔案的預設目錄。
預設 master 資料庫目錄 變更資料庫和記錄檔的預設目錄 master
預設 master 資料庫檔案名稱 變更資料庫檔案的名稱 master
預設傾印目錄 變更新記憶體傾印和其他疑難排解檔案的預設目錄。
預設錯誤記錄檔目錄 變更新 SQL Server 錯誤記錄檔、預設分析工具追蹤、系統健康情況工作階段 XE,以及 Hekaton 工作階段 XE 檔案的預設目錄。
預設備份目錄 變更新備份檔案的預設目錄。
傾印類型 選擇要收集的傾印記憶體傾印檔案類型。
版本(Edition) 設定 SQL Server 的版本。
高可用性 啟用可用性群組。
本機稽核目錄 設定目錄來新增本機稽核檔案。
地區設定 設定要針對 SQL Server 使用的地區設定。
記憶體限制 設定 SQL Server 的記憶體限制。
網路設定 適用於 SQL Server 的其他網路設定。
Microsoft 分散式交易協調器 設定和疑難排解 Linux 上的 MSDTC。
TCP 連接埠 變更 SQL Server 接聽連線所在的連接埠。
TLS 設定傳輸層級安全性。
追蹤旗標 \(機器翻譯\) 設定服務即將使用的追蹤旗標。

mssql-conf是一種設定腳本,可搭配適用于 Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Ubuntu 的 SQL Server 2019 (15.x) 進行安裝。 您可以使用此公用程式來設定下列參數:

參數 描述
代理程式 啟用 SQL Server Agent
使用 Windows 進行驗證 Windows Server Active Directory驗證的設定。
定序 為 Linux 上的 SQL Server 設定新的定序。
客戶意見反應 選擇 SQL Server 是否要將意見反應傳送給 Microsoft。
Database Mail 設定檔 為 Linux 上的 SQL Server 設定預設 Database Mail 設定檔。
預設資料目錄 變更新 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。
網路設定 適用於 SQL Server 的其他網路設定。
outboundnetworkaccess 針對 mlservices R、Python 及 Java 延伸模組啟用輸出網路存取。
TCP 連接埠 變更 SQL Server 接聽連線所在的連接埠。
TLS 設定傳輸層級安全性。
追蹤旗標 \(機器翻譯\) 設定服務即將使用的追蹤旗標。

mssql-conf是一種設定腳本,其安裝方式為 SQL Server 2022 (16.x) Preview for Red Hat Enterprise Linux 和 Ubuntu。 您可以使用此公用程式來設定下列參數:

參數 描述
代理程式 啟用 SQL Server Agent
使用 Azure AD 進行驗證 Azure Active Directory 驗證的設定。
使用 Windows 進行驗證 Windows Server Active Directory驗證的設定。
定序 為 Linux 上的 SQL Server 設定新的定序。
客戶意見反應 選擇 SQL Server 是否要將意見反應傳送給 Microsoft。
Database Mail 設定檔 為 Linux 上的 SQL Server 設定預設 Database Mail 設定檔。
預設資料目錄 變更新 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。
網路設定 適用於 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

啟用 SQL Server Agent

sqlagent.enabled 設定會啟用 SQL Server Agent。 預設會停用 SQL Server Agent。 如果 mssql.conf 設定檔中沒有sqlagent.enabled,則內部SQL Server假設已停用SQL Server Agent。

若要變更此設定,請執行下列步驟:

  1. 啟用 SQL Server Agent:

    sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true 
    
  2. 重新啟動 SQL Server 服務:

    sudo systemctl restart mssql-server
    

為 Linux 上的 SQL Server 設定預設 Database Mail 設定檔

sqlagent.databasemailprofile可讓您設定電子郵件警示的預設 DB Mail 設定檔。

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

SQL Agent 錯誤記錄檔

sqlagent.errorlogfilesqlagent.errorlogginglevel設定可讓您分別設定 SQL Agent 記錄檔路徑和記錄層級。

sudo /opt/mssql/bin/mssql-conf set sqlagent.errorfile <path>

SQL Agent 記錄層級是相當於各項的位元遮罩值:

  • 1 = 錯誤
  • 2 = 警告
  • 4 = 資訊

如果您想要擷取所有層級,請使用 7 作為值。

sudo /opt/mssql/bin/mssql-conf set sqlagent.errorlogginglevel <level>

設定 Azure Active Directory 驗證

從 SQL Server 2022 (16.x) Preview 開始,您可以針對 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/ 。 如果您使用憑證存放區或加密的磁片磁碟機,您可以變更此路徑。 若要變更路徑,您可以使用下列命令:

sudo /opt/mssql/bin/mssql-conf set network.aadcertificatefilepath /path/to/new/location.pfx

在上一個範例中,是您慣用的路徑, /path/to/new/location.pfx包括 憑證名稱。

Azure 擴充功能針對 SQL Server 下載的 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 圖形 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 將建立系統管理員的 Azure AD 帳戶名稱
network.aadserveradminsid 將設為系統管理員的 Azure AD 帳戶 SID
network.aadserveradmintype 將設為系統管理員的 Azure AD 帳戶類型
network.aadserviceprincipalname Azure AD 服務主體名稱
network.aadserviceprincipalnamenoslash Azure AD 服務主體名稱,不含斜線
network.aadstsurl Azure AD STS URL

設定 Windows Active Directory 驗證

setup-ad-keytab選項可用來建立 keytab,但必須已建立使用者和服務主體名稱 (SPN) ,才能使用此選項。 Active Directory 公用程式 adutil 可用來建立使用者、SPN 和 keytab。

如需使用 setup-ad-keytab的選項,請執行下列命令:

sudo /opt/mssql/bin/mssql-conf setup-ad-keytab --help

validate-ad-config選項會驗證 Active Directory 驗證的組態。

變更 SQL Server 定序

set-collation 選項會將定序值變更為任何支援的定序。 若要進行這項變更,必須停止SQL Server服務。

  1. 先在您的伺服器上備份所有使用者資料庫

  2. 接著,使用 sp_detach_db 預存程序來中斷連結使用者資料庫。

  3. 執行 set-collation 選項並遵循提示:

    sudo /opt/mssql/bin/mssql-conf set-collation
    
  4. mssql-conf公用程式會嘗試變更為指定的定序值,然後重新開機服務。 如果發生任何錯誤,則會將定序復原為先前的值。

  5. 還原您的使用者資料庫備份。

如需支援的定序清單,請執行 fn_helpcollations 函數:SELECT Name from sys.fn_helpcollations()

設定客戶意見反應

telemetry.customerfeedback 設定會變更 SQL Server 是否要將意見反應傳送給 Microsoft。 預設會針對所有版本將此值設為 true。 若要變更此值,請執行下列命令:

重要

您不能針對免費的 SQL Server 版本 (Express 和 Developer) 關閉客戶意見反應。

  1. 使用telemetry.customerfeedbackset命令,以 root 身分執行mssql-conf腳本。 下列範例藉由指定 false 來關閉客戶意見反應。

    sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false
    
  2. 重新啟動 SQL Server 服務:

    sudo systemctl restart mssql-server
    

如需詳細資訊,請參閱對於 Linux 上 SQL Server 的客戶意見反應SQL Server 隱私權聲明

變更預設資料或記錄目錄位置

filelocation.defaultdatadirfilelocation.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. 現在,新建資料庫的所有資料庫檔案都將儲存於這個新位置。 如果您想要變更新資料庫的記錄 (.ldf) 檔案位置,您可以使用下列 "set" 命令:

    sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /tmp/log
    
  6. 此命令也會假設 /tmp/log 目錄存在,而且它位於使用者和群組 mssql 之下。

變更預設 master 資料庫檔案目錄位置

filelocation.masterdatafilefilelocation.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. 使用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.mdfmastlog.ldf 指定目錄中的檔案,系統資料庫的範本複本會自動在指定的目錄中建立,且SQL Server會順利啟動。 不過,新的資料庫中不會更新 master 使用者資料庫、伺服器登入、伺服器憑證、加密金鑰、SQL 代理程式作業或舊 SA 登入密碼等中繼資料。 您將必須停止 SQL Server,並將舊的 master.mdf 和 mastlog.ldf 移到新的指定位置,然後啟動 SQL Server 以繼續使用現有的中繼資料。

變更資料庫檔案的名稱 master

filelocation.masterdatafilefilelocation.masterlogfile設定會變更SQL Server引擎尋找 master 資料庫檔案的位置。 您也可以使用此專案來變更資料庫和記錄檔的名稱 master

若要變更這些設定,請使用下列步驟:

  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
    

    重要

    您只能在成功啟動SQL Server之後變更資料庫和記錄檔的名稱 master 。 初始執行之前,SQL Server 預期會將檔案命名為 master.mdf 和 mastlog.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.defaultdumpdir設定會變更每當發生當機時產生記憶體和 SQL 傾印的預設位置。 根據預設,這些檔案會在 中 /var/opt/mssql/log 產生。

若要設定這個新位置,請使用下列命令:

  1. 為新的傾印檔案建立目標目錄。 下列範例會建立新的 /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 設定會變更建立新錯誤記錄檔、預設分析工具追蹤、系統健康情況工作階段 XE,以及 Hekaton 工作階段 XE 檔案的位置。 根據預設,此位置為 /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-confset 命令變更預設錯誤記錄檔名:

    sudo /opt/mssql/bin/mssql-conf set filelocation.errorlogfile /tmp/logs/errorlog
    
  4. 重新啟動 SQL Server 服務:

    sudo systemctl restart mssql-server
    

errorlog.numerrorlogs 設定將可讓您指定在循環使用記錄之前所維護的錯誤記錄檔數目。

變更預設備份目錄位置

filelocation.defaultbackupdir 設定會變更產生備份檔案的預設位置。 根據預設,這些檔案會在 中 /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會建立記憶體傾印。 擷取記憶體傾印可能需要很長的時間,並佔用大量空間。 若要儲存資源並避免重複的記憶體傾印,您可以使用 coredump.disablecoredump 選項來停用自動傾印擷取。

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

當使用者停用自動核心傾印時,使用者仍然可以手動產生記憶體傾印, (coredump.disablecoredump 設為 true) 。

有兩個選項可控制 SQL Server 所收集的記憶體傾印類型:coredump.coredumptypecoredump.captureminiandfull。 這些都與核心傾印擷取的兩個階段有關。

第一個階段的擷取是由 coredump.coredumptype 設定所控制,它會決定例外狀況期間所產生的傾印檔案類型。 第二個階段會在 coredump.captureminiandfull 設定時啟用。 如果 coredump.captureminiandfull 設定為 true,則會產生 coredump.coredumptype 所指定的傾印檔案,也會產生第二個迷你傾印。 將 coredump.captureminiandfull 設定為 false,會停用第二次擷取嘗試。

  1. 決定是否要使用 coredump.captureminiandfull 設定來擷取迷你和完整傾印。

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

    預設值:false

  2. 使用 coredump.coredumptype 設定來指定傾印檔案的類型。

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

    預設值:miniplus

    下表列出可能的 coredump.coredumptype 值。

    類型 描述
    mini Mini 是最小的傾印檔案類型。 它會使用 Linux 系統資訊來判斷程序中的執行緒和模組。 傾印僅包含主機環境執行緒堆疊和模組。 它不包含間接記憶體參考或全域。
    miniplus MiniPlus 類似於 mini,但它包含額外的記憶體。 它會瞭解 SQLPAL 和主機環境的內部,並將下列記憶體區域新增至傾印:

    - 各種全域
    - 所有高於 64 TB
    的記憶體 - 在/proc/$pid/maps
    中找到的所有具名區域 - 執行緒和堆疊
    的間接記憶體 - 執行緒資訊
    - 相關聯的 Teb 和 Peb
    - 模組資訊
    - VMM 和 VAD 樹狀結構中找到的所有具名區域
    filtered Filtered 會使用以減法為基礎的設計,除非特別排除,否則會包含程序中的所有記憶體。 此設計瞭解 SQLPAL 和主機環境的內部,但不包括來自傾印的特定區域。
    full Full 是完整處理的傾印,其中包含位於 /proc/$pid/maps 的所有區域。 這不受 coredump.captureminiandfull 設定所控制。

版本

您可以使用set-edition選項來變更SQL Server的版本。 若要變更SQL Server版本,必須先停止SQL Server服務。 如需可用Linux 上的 SQL Server版本的詳細資訊,請參閱SQL Server版本

高可用性

hadr.hadrenabled 選項會在您的 SQL Server 執行個體上啟用可用性群組。 下列命令藉由將 hadr.hadrenabled 設定為 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.userrequestedlocalauditdirectoryset命令,以 root 身分執行mssql-conf腳本:

    sudo /opt/mssql/bin/mssql-conf set telemetry.userrequestedlocalauditdirectory /tmp/audit
    
  4. 重新啟動 SQL Server 服務:

    sudo systemctl restart mssql-server
    

如需詳細資訊,請參閱對於 Linux 上 SQL 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 可用的實體記憶體數量 (以 MB 為單位)。 預設值為 80% 的實體記憶體。

  1. 使用memory.memorylimitmbset命令,以 root 身分執行mssql-conf腳本。 下列範例會將 SQL Server 可用的記憶體變更為 3.25 GB (3328 MB)。

    sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3328
    
  2. 重新啟動 SQL Server 服務以套用變更:

    sudo systemctl restart mssql-server
    

其他記憶體設定

下列選項可用來進行記憶體設定。

選項 描述
memory.disablememorypressure SQL Server 可解除記憶體壓力。 值可以是 truefalse
memory.memory_optimized 啟用或停用 SQL Server 經記憶體最佳化的功能:持續性記憶體檔案啟蒙、記憶體保護。 值可以是 truefalse
memory.enablecontainersharedmemory 僅適用于SQL Server容器。 使用此設定可啟用SQL Server容器內的共用記憶體。 根據預設,這項設定為 false。 值可以是 truefalse

設定 MSDTC

network.rpcportdistributedtransaction.servertcpport 設定會用來設定 Microsoft 分散式交易協調器 (MSDTC)。 若要變更這些設定,請執行下列命令:

  1. 使用 「network.rpcport」 的set命令,以 root 身分執行mssql-conf腳本:

    sudo /opt/mssql/bin/mssql-conf set network.rpcport <rcp_port>
    
  2. 接著,設定 "distributedtransaction.servertcpport" 設定:

    sudo /opt/mssql/bin/mssql-conf set distributedtransaction.servertcpport <servertcpport_port>
    

除了設定這些值,您還必須為連接埠 135 設定路由及更新防火牆。 如需如何執行此動作的詳細資訊,請參閱如何在 Linux 上設定 MSDTC

mssql-conf有數個其他設定可用來監視 MSDTC 並進行疑難排解。 下表簡短描述這些設定。 如需其使用方式的詳細資訊,請參閱 Windows 支援文章中的詳細資料:如何針對 MS DTC 啟用診斷追蹤 \(機器翻譯\)。

選項 描述
distributedtransaction.allowonlysecurerpccalls 針對分散式交易設定僅安全的 RPC 呼叫
distributedtransaction.fallbacktounsecurerpcifnecessary 針對分散式交易設定僅限安全性的 RPC 呼叫
distributedtransaction.maxlogsize DTC 交易記錄檔大小 (以 MB 為單位)。 預設值為 64 MB
distributedtransaction.memorybuffersize 儲存追蹤的循環緩衝區大小。 此大小為 MB,預設值為 10 MB
distributedtransaction.servertcpport MSDTC rpc 伺服器連接埠
distributedtransaction.trace_cm 連線管理員中的追蹤
distributedtransaction.trace_contact 追蹤連絡人集區和連絡人
distributedtransaction.trace_gateway 追蹤閘道來源
distributedtransaction.trace_log 記錄追蹤
distributedtransaction.trace_misc 無法分類為其他類別的追蹤
distributedtransaction.trace_proxy MSDTC Proxy 中所產生的追蹤
distributedtransaction.trace_svc 追蹤服務和 .exe 檔案啟動
distributedtransaction.trace_trace 追蹤基礎結構本身
distributedtransaction.trace_util 追蹤從多個位置呼叫的公用程式常式
distributedtransaction.trace_xa XA 交易管理員 (XATM) 追蹤來源
distributedtransaction.tracefilepath 應在其中儲存追蹤檔案的資料夾
distributedtransaction.turnoffrpcsecurity 啟用或停用分散式交易的 RPC 安全性

接受 MLServices EULA

機器學習 R 或 Python 套件新增至資料庫引擎,要求您接受適用於 R 和 Python 開放原始碼發行版本的授權條款。 下表列舉與 mlservices EULA 相關的所有可用命令或選項。 根據您安裝的內容而定,會針對 R 和 Python 使用相同的 EULA 參數。

# For all packages: database engine and mlservices
# Setup prompts for mlservices EULAs, which you need to accept
sudo /opt/mssql/bin/mssql-conf setup

# Add R or Python to an existing installation
sudo /opt/mssql/bin/mssql-conf setup accept-eula-ml

# Alternative valid syntax
# Adds the EULA section to the INI and sets acceptulam to yes
sudo /opt/mssql/bin/mssql-conf set EULA accepteulaml Y

# Rescind EULA acceptance and removes the setting
sudo /opt/mssql/bin/mssql-conf unset EULA accepteulaml

您也可以將接受 EULA 直接新增至 mssql.conf 檔案

[EULA]
accepteula = Y
accepteulaml = Y

啟用輸出網路存取

預設會在 SQL Server 機器學習服務功能中,停用 R、Python 和 JAVA 延伸模組的輸出網路存取。 若要啟用輸出要求,請使用 mssql-conf 來設定 "outboundnetworkaccess" 布林值屬性。

設定屬性之後,重新啟動 SQL Server Launchpad 服務,以從 INI 檔案讀取更新後的值。 每當修改擴充性相關設定時,系統會顯示重新啟動訊息提醒您。

# Adds the extensibility section and property.
# Sets "outboundnetworkaccess" to true.
# This setting is required if you want to access data or operations off the server.
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1

# Turns off network access but preserves the setting
sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 0

# Removes the setting and rescinds network access
sudo /opt/mssql/bin/mssql-conf unset extensibility.outboundnetworkaccess

您也可以將 "outboundnetworkaccess" 直接新增至 mssql.conf 檔案

[extensibility]
outboundnetworkaccess = 1

變更 TCP 通訊埠

network.tcpport 設定會變更 SQL Server 用來接聽連線的 TCP 連接埠。 此連接埠預設為 1433。 若要變更此連接埠,請執行下列命令:

  1. 使用 「network.tcpport」 的 「set」 命令,以 root 身分執行 mssql-conf 腳本:

    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 帳戶存取。 Microsoft 建議使用 chown mssql:mssql <file>; chmod 400 <file> 來限制檔案的存取。
network.tlskey SQL Server用於 TLS 之私密金鑰檔案的絕對路徑。 範例: /etc/ssl/private/mssql.key 憑證檔案必須由 mssql 帳戶存取。 Microsoft 建議使用 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,則 Microsoft 建議只允許 TLS 1.2。
network.tlsciphers 指定 TLS SQL Server允許的加密。 此字串必須根據每個 OpenSSL 的 Cipher 清單格式 \(英文\) 來格式化。 一般而言,您不應該變更此選項。
預設允許下列 Cipher:
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 檔案的路徑

如需使用 TLS 設定的範例,請參閱在 Linux 上加密 SQL Server 連線

網路設定

請參閱教學課程:透過 Linux 上的 SQL Server 使用 Active Directory 驗證,以取得透過 Linux 上的 SQL Server 使用 AD 驗證的完整資訊。

下列選項是可使用 mssql-conf 來設定的其他網路設定。

選項 描述
network.disablesssd 停用查詢 SSSD 的 AD 帳戶資訊並預設為 LDAP 呼叫。 值可以是 truefalse
network.enablekdcfromkrb5conf 允許從 krb5.conf 查閱 KDC 資訊。 值可以是 truefalse
network.forcesecureldap 強制使用 LDAPS 來連絡網域控制站。 值可以是 truefalse
network.ipaddress 連入連線的 IP 位址。
network.kerberoscredupdatefrequency 針對需要更新的 Kerberos 認證進行檢查之間的時間 (以秒為單位)。 值為整數。
network.privilegedadaccount 要用於 AD 驗證的特殊權限 AD 使用者。 值為 <username>。 如需詳細資訊,請參閱教學課程:在 Linux 上搭配使用 Active Directory 驗證與 SQL Server
uncmapping 將 UNC 路徑對應到本機路徑。 例如: sudo /opt/mssql/bin/mssql-conf set uncmapping //servername/sharename /tmp/folder
ldaphostcanon 設定 OpenLDAP 是否應該在系結步驟期間規範主機名稱。 值可以是 truefalse

啟用/停用追蹤旗標

追蹤旗標選項會啟用或停用啟動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 檔案。

檢視各種選項

若要檢視可使用 mssql-conf 公用程式設定的各種選項,請執行 help 命令:

sudo /opt/mssql/bin/mssql-conf --help

結果會為您提供各種組態選項,以及每個設定的簡短描述。

mssql.conf 格式

下列 /var/opt/mssql/mssql.conf 檔案提供每項設定的範例。 您可以使用此格式,視需要手動變更 mssql.conf 檔案。 如果您手動變更檔案,則必須先重新啟動 SQL Server 之後才能套用變更。 若要搭配 mssql.conf Docker 使用檔案,您必須讓 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
[EULA]
accepteula = Y
accepteulaml = Y

[coredump]
captureminiandfull = true
coredumptype = full

[distributedtransaction]
servertcpport = 51999

[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
rpcport = 13500
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

後續步驟

若要改用環境變數進行這其中的一些設定變更,請參閱使用環境變數設定 SQL Server 設定

如需其他管理工具和案例,請參閱管理 Linux 上的 SQL Server