分享方式:


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

適用於:SQL Server - Linux

mssql-conf 是一個設定指令碼,會使用適用於 Red Hat Enterprise Linux、SUSE Linux Enterprise Server 和 Ubuntu 的 SQL Server 2017 (14.x) 進行安裝。 其會修改儲存設定值的 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。
Machine Learning Services EULA 接受適用於 mlservices 套件的 R 和 Python EULA。 僅適用於 SQL Server 2019 (15.x)。
網路設定 適用於 SQL Server 的其他網路設定。
outboundnetworkaccess 針對 Machine Learning Services R、Python 及 Java 延伸模組啟用輸出網路存取。
TCP 連接埠 變更 SQL Server 接聽連線所在的連接埠。
TLS 設定傳輸層級安全性。
追蹤旗標 \(機器翻譯\) 設定服務即將使用的追蹤旗標。

mssql-conf 是一個設定指令碼,會使用適用於 Red Hat Enterprise Linux 和 Ubuntu 的 SQL Server 2022 (16.x) 進行安裝。 您可以使用此公用程式來設定下列參數:

參數 描述
代理程式 啟用 SQL Server Agent
使用 Microsoft Entra 識別碼驗證 使用 Microsoft Entra ID 進行驗證 (先前稱為 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。
Machine Learning Services EULA 接受適用於 mlservices 套件的 R 和 Python EULA。 僅適用於 SQL Server 2019 (15.x)。
網路設定 適用於 SQL Server 的其他網路設定。
輸出網路存取 針對 Machine Learning Services R、Python 及 Java 延伸模組啟用輸出網路存取。
SQL Server 連接器 設定 SQL Server 連接器的記錄層級。
TCP 連接埠 變更 SQL Server 接聽連線所在的連接埠。
TLS 設定傳輸層級安全性。
追蹤旗標 \(機器翻譯\) 設定服務即將使用的追蹤旗標。

提示

這其中一些設定也可以使用環境變數來設定。 如需詳細資訊,請參閱在 Linux 上使用環境變數設定 SQL Server 設定

使用提示

  • 對於 Always On 可用性群組和共用磁碟叢集,一律會在每個節點上進行相同的設定變更。

  • 針對共用磁碟叢集案例,請勿嘗試重新開啟 mssql-server 服務來套用變更。 SQL Server 正以應用程式形式執行中。 相反地,讓資源離線,然後重新上線。

  • 這些範例會藉由指定此完整路徑來執行 mssql-conf/opt/mssql/bin/mssql-conf。 如果您選擇改為瀏覽至該路徑,請在目前目錄的內容中執行 mssql-conf./mssql-conf

  • 如果您想要修改容器內的 mssql.conf 檔案,請在其中容器以所需設定執行的主機上建立 mssql.conf 檔案,然後重新部署您的容器。 例如,mssql.conf 檔案的下列新增內容會啟用 SQL Server Agent。

    [sqlagent]
    enabled = true
    

    您可以使用下列命令來部署容器:

    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
    -p 5433:1433 --name sql1 \
    -v /container/sql1:/var/opt/mssql \
    -d mcr.microsoft.com/mssql/server:2019-latest
    

    如需詳細資訊,請參閱建立 SQL Server 容器所要使用的組態檔

啟用 SQL Server Agent

sqlagent.enabled 設定會啟用 SQL Server Agent。 預設會停用 SQL Server Agent。 如果 sqlagent.enabled 未出現在 mssql.conf 設定檔中,則 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.errorlogfile <path>

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

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

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

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

設定 Microsoft Entra 帳戶驗證

從 SQL Server 2022 (16.x) 開始,您可以設定 SQL Server 的 Microsoft Entra ID。 若要設定 Microsoft Entra ID,您必須在安裝 SQL Server 之後,安裝適用於 SQL Server 的 Azure 延伸模組。 如需設定 Microsoft Entra ID 方法的詳細資訊,請參閱教學課程:設定適用於 SQL Server 的 Microsoft Entra 驗證

變更預設的 Microsoft Entra ID 憑證路徑

根據預設,Microsoft Entra 憑證檔案會儲存在 /var/opt/mssql/aadsecrets/ 中。 如果您使用憑證存放區或加密磁碟機,則可以變更此路徑。 若要變更路徑,您可以使用下列命令:

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

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

Microsoft Entra 驗證的憑證 (由適用於 SQL Server 的 Azure 延伸項目下載) 會儲存在此位置。 您無法將其變更為 /var/opt/mssql/secrets

注意

安裝 SQL Server 之後,您隨時都可以變更預設的 Microsoft Entra ID 憑證路徑,但必須在啟用 Microsoft Entra ID「之前」變更。

Microsoft Entra ID 組態選項

Microsoft Entra 驗證會針對在 Linux 上執行的 SQL Server 執行個體使用下列選項。

警告

Microsoft Entra ID 參數是由適用於 SQL Server 的 Azure 延伸模組所設定,不應手動重新設定。 此處所列資訊僅供參考之用。

選項 描述
network.aadauthenticationendpoint Microsoft Entra 驗證的端點
network.aadcertificatefilepath 用來向 Microsoft Entra ID 進行驗證的憑證檔案路徑
network.aadclientcertblacklist Microsoft Entra ID 用戶端憑證封鎖清單
network.aadclientid Microsoft Entra 用戶端 GUID
network.aadfederationmetadataendpoint Microsoft Entra 同盟中繼資料的端點
network.aadgraphapiendpoint Azure AD 圖形 API 的端點
network.aadgraphendpoint Azure AD Graph 端點
network.aadissuerurl Microsoft Entra 簽發者 URL
network.aadmsgraphendpoint Microsoft Entra MS 圖表化端點
network.aadonbehalfofauthority Microsoft Entra ID 代表授權單位
network.aadprimarytenant Microsoft Entra 主要租用戶 GUID
network.aadsendx5c Microsoft Entra ID 傳送 X5C
network.aadserveradminname 將設為系統管理員的 Microsoft Entra 帳戶名稱
network.aadserveradminsid 將設為系統管理員的 Microsoft Entra 帳戶 SID
network.aadserveradmintype 將設為系統管理員的 Microsoft Entra 帳戶類型
network.aadserviceprincipalname Microsoft Entra 服務主體名稱
network.aadserviceprincipalnamenoslash 不使用正斜線的 Microsoft Entra 服務主體名稱
network.aadstsurl Microsoft Entra STS URL

設定 Azure Active Directory 驗證

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

如需使用 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 命令,以根身分執行 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.mdfmastlog.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 會成功啟動。 不過,中繼資料 (例如,使用者資料庫、伺服器登入、伺服器憑證、加密金鑰、SQL Agent 作業或舊的 SA 登入密碼) 不會在新的 master 資料庫中更新。 您將必須停止 SQL Server,並將舊的 master.mdfmastlog.ldf 移到新的指定位置,然後啟動 SQL Server 以繼續使用現有的中繼資料。

變更 master 資料庫檔案的名稱

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

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

  1. 停止 SQL Server 服務:

    sudo systemctl stop mssql-server
    
  2. 使用 mssql-conf 搭配 set 命令,來變更 master 資料和記錄檔的預期 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.mdfmastlog.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 Server 錯誤記錄檔的目錄會成為其他記錄的預設記錄目錄。

變更這些設定:

  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
    

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 值。

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

    - 各種 Globals
    - 所有高於 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 命令,以根身分執行 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%,可避免記憶體不足 (OOM) 的狀況。

重要

memory.memorylimitmb 設定會限制 SQL Server 程序可用的實體記憶體數量。 最大伺服器記憶體 (MB) 設定可用來調整 SQL Server 緩衝集區可用的記憶體數量,但絕對不能超過 SQL Server 可用的實體記憶體數量。 如需最大服器記憶體 (MB) 伺服器組態選項的詳細資訊,請參閱伺服器記憶體組態選項

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

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

    sudo systemctl restart mssql-server
    

其他記憶體設定

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

選項 Description
memory.disablememorypressure SQL Server 可解除記憶體壓力。 值可以是 truefalse (預設)。 停用記憶體壓力會禁止 SQL Server 用來將其實體記憶體使用量限制為 memory.memorylimitmb 的訊號,進而導致使用量最終超過該限制。
memory.memory_optimized 啟用或停用 SQL Server 經記憶體最佳化的功能:持續性記憶體檔案啟蒙、記憶體保護。 值可以是 truefalse
memory.enablecontainersharedmemory 僅適用於 SQL Server 容器。 使用此設定可啟用 SQL Server 容器內的共用記憶體。 如需詳細資訊,請參閱在容器中啟用 VDI 備份與還原。 值可以是 truefalse (預設)。

設定 MSDTC

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

  1. 使用 network.rpcportset 命令,以根身分執行 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 上設定 Microsoft Distributed Transaction Coordinator (MSDTC)

您可以使用其他數個適用於 mssql-conf 的設定來監視和疑難排解 MSDTC。 下表簡短描述這些設定。 如需其使用方式的詳細資訊,請參閱 Windows 支援文章中的詳細資料:如何在 Windows 10 電腦上啟動 MS DTC 啟用診斷追蹤

選項 Description
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 安全性

接受 Machine Learning Services 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

變更記錄檔層級適用於 Azure Key Vault 的 SQL Server 連接器

在 SQL Server 2022 (16.x) CU 14 和更新版本中,Linux 上的 SQL Server 支援使用 Azure Key Vault 的 TDE 可延伸金鑰管理。 您可以為下列其中一個值設定記錄層級:

層級 描述
0 (預設值) 資訊
1 錯誤
2 無記錄

若要變更 SQL Server 連接器的記錄層級,請使用下列範例:

sudo /opt/mssql/bin/mssql-conf set sqlconnector.logginglevel 1

如需更多資訊,請參閱 搭配使用 SQL Server 連接器與 SQL 加密功能

變更 TCP 通訊埠

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

  1. 使用 network.tcpportset 命令,以根身分執行 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。

選項 Description
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 指定 SQL Server 針對 TLS 允許哪些加密。 此字串必須根據每個 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 使用 Active Directory 驗證的完整資訊。

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

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

啟用或停用追蹤旗標

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 檔案。

檢視各種選項

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

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

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

mssql.conf 格式

下列 /var/opt/mssql/mssql.conf 檔案提供每項設定的範例。 您可以視需要使用此格式,手動對 mssql.conf 檔案進行變更。 如果您手動變更檔案,則必須先重新啟動 SQL Server 之後才能套用變更。 若要搭配 Docker 使用 mssql.conf 檔案,您必須讓 Docker 保存您的資料。 首先,將完整的 mssql.conf 檔案新增至您的主機目錄,然後執行該容器。 設定 Linux 上的 SQL Server的使用方式和診斷數據收集中有一個範例。

[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 文件

您知道您可以自行編輯 SQL 內容嗎? 這樣做不僅可以協助改善文件,也能名列該頁面的參與者。

如需詳細資訊,請參閱如何參與 SQL Server 文件