mssql-conf ツールを使用して SQL Server on Linux を構成する

適用対象: 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 エージェントを有効にします。
Windows での認証 Windows Server Active Directory 認証のための設定。
Collation SQL Server on Linux に新しいコロケーションを設定します。
カスタマー フィードバック SQL Server が Microsoft にフィードバックを送信するかどうかを選択します。
[データベース メール プロファイル] SQL Server on Linux の既定のデータベース メール プロファイルを設定します。
既定のデータ ディレクトリ 新しい SQL Server データベースのデータ ファイル (.mdf) の既定のディレクトリを変更します。
既定のログ ディレクトリ 新しい SQL Server データベースのログ (.ldf) ファイルの既定のディレクトリを変更します。
既定のマスター データベース ディレクトリ master データベース ファイルとログ ファイルの既定のディレクトリを変更します。
既定のマスター データベース ファイル名 master データベース ファイルの名前を変更します。
既定のダンプ ディレクトリ 新しいメモリ ダンプおよびその他のトラブルシューティング ファイルの既定のディレクトリを変更します。
既定のエラー ログ ディレクトリ 新しい SQL Server エラー ログ、既定のプロファイラー トレース、システム正常性セッション XE、Hekaton セッション XE ファイルのための既定のディレクトリを変更します。
既定のバックアップ ディレクトリ 新しいバックアップ ファイルの既定のディレクトリを変更します。
ダンプの種類 収集するダンプ メモリのダンプ ファイルの種類を選択します。
のエディション SQL Server のエディションを設定します。
高可用性 可用性グループを有効にします。
Local Audit ディレクトリ ディレクトリを設定して Local Audit ファイルを追加します。
ロケール 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 エージェントを有効にする
Windows での認証 Windows Server Active Directory 認証のための設定。
Collation SQL Server on Linux に新しいコロケーションを設定します。
カスタマー フィードバック SQL Server が Microsoft にフィードバックを送信するかどうかを選択します。
[データベース メール プロファイル] SQL Server on Linux の既定のデータベース メール プロファイルを設定します。
既定のデータ ディレクトリ 新しい SQL Server データベースのデータ ファイル (.mdf) の既定のディレクトリを変更します。
既定のログ ディレクトリ 新しい SQL Server データベースのログ (.ldf) ファイルの既定のディレクトリを変更します。
既定のマスター データベース ファイルのディレクトリ 既存の SQL インストール上の master データベース ファイルの既定のディレクトリを変更します。
既定のマスター データベース ファイル名 master データベース ファイルの名前を変更します。
既定のダンプ ディレクトリ 新しいメモリ ダンプおよびその他のトラブルシューティング ファイルの既定のディレクトリを変更します。
既定のエラー ログ ディレクトリ 新しい SQL Server エラー ログ、既定のプロファイラー トレース、システム正常性セッション XE、Hekaton セッション XE ファイルのための既定のディレクトリを変更します。
既定のバックアップ ディレクトリ 新しいバックアップ ファイルの既定のディレクトリを変更します。
ダンプの種類 収集するダンプ メモリのダンプ ファイルの種類を選択します。
のエディション SQL Server のエディションを設定します。
高可用性 可用性グループを有効にします。
Local Audit ディレクトリ ディレクトリを設定して Local Audit ファイルを追加します。
ロケール SQL Server で使用するロケールを設定します。
メモリの制限 SQL Server のメモリ制限を設定します。
Microsoft 分散トランザクション コーディネーター Linux で MSDTC の構成とトラブルシューティングを行います。
MLServices の EULA mlservices パッケージ用の R および Python の EULA に同意します。 SQL Server 2019 (15.x) のみに適用されます。
ネットワーク設定 SQL Server 用の追加のネットワーク設定。
outboundnetworkaccess mlservices R、Python、および Java 拡張機能の送信ネットワーク アクセスを有効にします。
TCP ポート SQL Server が接続をリッスンするポートを変更します。
TLS トランスポート層セキュリティを構成します。
トレース フラグ サービスが使用するトレース フラグを設定します。

mssql-conf は、Red Hat Enterprise Linux、Ubuntu 用に SQL Server 2022 (16.x) と共にインストールされる構成スクリプトです。 このユーティリティを使用すると、次のパラメーターを設定できます。

パラメーター 説明
エージェント SQL Server エージェントを有効にする
Azure AD による認証 Azure Active Directory 認証の設定。
Windows での認証 Windows Server Active Directory 認証のための設定。
Collation SQL Server on Linux に新しいコロケーションを設定します。
カスタマー フィードバック SQL Server が Microsoft にフィードバックを送信するかどうかを選択します。
[データベース メール プロファイル] SQL Server on Linux の既定のデータベース メール プロファイルを設定します。
既定のデータ ディレクトリ 新しい SQL Server データベースのデータ ファイル (.mdf) の既定のディレクトリを変更します。
既定のログ ディレクトリ 新しい SQL Server データベースのログ (.ldf) ファイルの既定のディレクトリを変更します。
既定のマスター データベース ファイルのディレクトリ 既存の SQL インストール上の master データベース ファイルの既定のディレクトリを変更します。
既定のマスター データベース ファイル名 master データベース ファイルの名前を変更します。
既定のダンプ ディレクトリ 新しいメモリ ダンプおよびその他のトラブルシューティング ファイルの既定のディレクトリを変更します。
既定のエラー ログ ディレクトリ 新しい SQL Server エラー ログ、既定のプロファイラー トレース、システム正常性セッション XE、Hekaton セッション XE ファイルのための既定のディレクトリを変更します。
既定のバックアップ ディレクトリ 新しいバックアップ ファイルの既定のディレクトリを変更します。
ダンプの種類 収集するダンプ メモリのダンプ ファイルの種類を選択します。
のエディション SQL Server のエディションを設定します。
高可用性 可用性グループを有効にします。
Local Audit ディレクトリ ディレクトリを設定して Local Audit ファイルを追加します。
ロケール SQL Server で使用するロケールを設定します。
メモリの制限 SQL Server のメモリ制限を設定します。
Microsoft 分散トランザクション コーディネーター Linux で MSDTC の構成とトラブルシューティングを行います。
MLServices の EULA mlservices パッケージ用の R および Python の EULA に同意します。 SQL Server 2019 (15.x) のみに適用されます。
ネットワーク設定 SQL Server 用の追加のネットワーク設定。
送信ネットワーク アクセス MLServices R、Python、Java の拡張機能用に送信ネットワーク アクセスを有効にします。
TCP ポート SQL Server が接続をリッスンするポートを変更します。
TLS トランスポート層セキュリティを構成します。
トレース フラグ サービスが使用するトレース フラグを設定します。

ヒント

これらの設定の一部は、環境変数を使って構成することもできます。 詳細については、環境変数を使った SQL Server 設定の構成に関するページを参照してください。

使用上のヒント

  • Always On 可用性グループと共有ディスク クラスターの場合は、常に、各ノードで同じ構成の変更を行います。

  • 共有ディスク クラスターのシナリオでは、変更を適用するために mssql-server サービスを再起動しないでください。 SQL Server がアプリケーションとして実行されています。 代わりに、リソースをオフラインにしてからオンラインに戻します。

  • これらの例では、完全なパス (/opt/mssql/bin/mssql-conf) を指定して mssql-conf を実行しています。 代わりにそのパスに移動する場合は、現在のディレクトリ (./mssql-conf) のコンテキストで mssql-conf を実行します。

  • コンテナー内の mssql.conf ファイルを変更する場合は、目的の設定でコンテナーを実行しているホスト上に mssql.conf ファイルを作成し、コンテナーを再デプロイします。 たとえば、mssql.conf ファイルに次を追加すると、SQL Server エージェントが有効になります。

    [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 エージェントを有効にする

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 on Linux の既定のデータベース メール プロファイルを設定する

sqlagent.databasemailprofile を使用すると、メール アラートの既定の DB メール プロファイルを設定できます。

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) 以降、Azure Active Directory (Azure AD) for SQL Server を構成できるようになりました。 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 は、証明書名を "含む" 任意のパスです。

SQL Server 用 Azure 拡張機能によってダウンロードされた Azure AD 認証のための証明書は、この場所に格納されます。 これを /var/opt/mssql/secrets に変更することはできません。

注意

既定の Azure AD 証明書のパスは、SQL Server のインストール後にいつでも変更できますが、Azure AD を有効にする "前に" 変更する必要があります。

Azure AD の構成オプション

次のオプションは、Linux 上で動作する SQL Server のインスタンスに対して、Azure AD 認証によって使われます。

警告

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 Graph 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 の X5C の送信
network.aadserveradminname sysadmin にする Azure AD アカウントの名前
network.aadserveradminsid sysadmin にする Azure AD アカウントの SID
network.aadserveradmintype sysadmin にする 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. ユーザー データベースのバックアップを復元します。

サポートされている照合順序の一覧については、sys.fn_helpcollations 関数: SELECT Name from sys.fn_helpcollations() を実行してください。

カスタマー フィードバックを構成する

telemetry.customerfeedback 設定により、SQL Server が Microsoft にフィードバックを送信するかどうかが変更されます。 既定では、この値はすべてのエディションで true に設定されます。 値を変更するには、次のコマンドを実行します。

重要

SQL Server、Express、Developer の無償のエディションに関するカスタマー フィードバックをオフにすることはできません。

  1. telemetry.customerfeedbackset コマンドを使って、mssql-conf スクリプトを root として実行します。 次の例では、false を指定することによってカスタマー フィードバックをオフにします。

    sudo /opt/mssql/bin/mssql-conf set telemetry.customerfeedback false
    
  2. SQL Server サービスを再起動します。

    sudo systemctl restart mssql-server
    

詳細については、SQL Server on Linux に関するカスタマー フィードバックおよび 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
    

    Note

    マスター データ ファイルとログ ファイルを移動するだけでなく、他のすべてのシステム データベースの既定の場所も移動します。

  4. SQL Server サービスを停止します。

    sudo systemctl stop mssql-server
    
  5. master.mdf および mastlog.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
    

    Note

    SQL Server で指定されたディレクトリに master.mdf ファイルと mastlog.ldf ファイルが見つからない場合は、指定されたディレクトリにシステム データベースのテンプレート化されたコピーが自動的に作成され、SQL Server が正常に起動します。 ただし、ユーザー データベース、サーバー ログイン、サーバー証明書、暗号化キー、SQL エージェント ジョブ、古い 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
    

    重要

    master データベース ファイルとログ ファイルの名前は、SQL Server が正常に起動された後でのみ変更できます。 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.disablecoredumptrue に設定されている) 場合でも、ユーザーは手動でメモリ ダンプを生成できます。

SQL Server によって収集されるメモリ ダンプの種類を制御するための 2 つのオプション (coredump.coredumptypecoredump.captureminiandfull) があります。 これらは、コア ダンプ キャプチャの 2 つのフェーズに関連しています。

最初のフェーズのキャプチャは、例外の発生時に生成されるダンプ ファイルの種類を決定する coredump.coredumptype 設定によって制御されます。 2 番目のフェーズは、coredump.captureminiandfull の設定時に有効になります。 coredump.captureminiandfull が true に設定されている場合は、coredump.coredumptype によって指定されたダンプ ファイルが生成され、2 番目のミニ ダンプも生成されます。 coredump.captureminiandfull を false に設定すると、2 回目のキャプチャの試行が無効になります。

  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 で指定できる値です。

    Type 説明
    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 の設定によって制御されません。

Edition

SQL Server のエディションは、set-edition オプションを使用して変更できます。 SQL Server のエディションを変更するには、最初に SQL Server サービスを停止する必要があります。 使用可能な SQL Server on Linux エディションの詳細については、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

可用性グループでの使用方法については、次の 2 つの記事を参照してください。

ローカル監査ディレクトリを設定する

telemetry.userrequestedlocalauditdirectory の設定により、Local Audit が有効になり、Local Audit ログが作成されるディレクトリを設定できます。

  1. 新しい Local Audit ログのターゲット ディレクトリを作成します。 次の例では、新しい /tmp/audit ディレクトリを作成します。

    sudo mkdir /tmp/audit
    
  2. ディレクトリの所有者とグループを mssql ユーザーに変更します。

    sudo chown mssql /tmp/audit
    sudo chgrp mssql /tmp/audit
    
  3. telemetry.userrequestedlocalauditdirectoryset コマンドを使って、mssql-conf スクリプトを root として実行します。

    sudo /opt/mssql/bin/mssql-conf set telemetry.userrequestedlocalauditdirectory /tmp/audit
    
  4. SQL Server サービスを再起動します。

    sudo systemctl restart mssql-server
    

詳細については、SQL Server on Linux に関するカスタマー フィードバックに関するページを参照してください。

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 単位) を制御します。 メモリ不足 (OOM) の状態を防ぐため、既定値は物理メモリの 80% です。

重要

memory.memorylimitmb の設定により、SQL Server プロセスで使用できる "物理メモリ" の量が制限されます。 最大サーバー メモリ (MB) の設定を使うと、SQL Server の "バッファー プール" で使用できるメモリの量を調整できますが、SQL Server に使用できる物理メモリの量を超えることはできません。 最大サーバー メモリ (MB) サーバー構成オプションについて詳しくは、「サーバー メモリの構成オプション」をご覧ください。

  1. memory.memorylimitmbset コマンドを使って、mssql-conf スクリプトを root として実行します。 次の例では、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 によるメモリ負荷の無効化。 使用できる値は、true または false です。
memory.memory_optimized SQL Server のメモリ最適化機能 (永続メモリ ファイル エンライトメント、メモリ保護) を有効または無効にします。 使用できる値は、true または false です。
memory.enablecontainersharedmemory SQL Server コンテナーのみに適用されます。 この設定を使用して、SQL Server コンテナー内の共有メモリを有効にします。 既定では、これは false に設定されています。 使用できる値は、true または false です。

MSDTC の構成

Microsoft 分散トランザクション コーディネーター (MSDTC) を構成するには、network.rpcportdistributedtransaction.servertcpport の設定を使います。 これらの設定を変更するには、次のコマンドを実行します。

  1. network.rpcportset コマンドを使って、mssql-conf スクリプトを root として実行します。

    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 の監視とトラブルシューティングに使用できるその他のいくつかの設定があります。 次の表では、これらの設定について簡単に説明しています。 使用方法の詳細については、MS DTC の診断トレースを有効にする方法に関する Windows サポートの記事を参照してください。

オプション 説明
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 プロキシで生成されるトレース
distributedtransaction.trace_svc サービスと .exe ファイルのスタートアップをトレースします
distributedtransaction.trace_trace トレース インフラストラクチャ自体
distributedtransaction.trace_util 複数の場所から呼び出されるユーティリティ ルーチンをトレースします
distributedtransaction.trace_xa XA トランザクション マネージャー (XATM) のトレースのソース
distributedtransaction.tracefilepath トレース ファイルを格納するフォルダー
distributedtransaction.turnoffrpcsecurity 分散トランザクションの RPC セキュリティを有効または無効にします

MLServices の EULA に同意する

Machine Learning の 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

mssql.conf ファイルに EULA の同意を直接追加することもできます。

[EULA]
accepteula = Y
accepteulaml = Y

送信ネットワーク アクセスを有効にする

SQL Server Machine Learning Services 機能の 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

mssql.conf ファイルoutboundnetworkaccess を直接追加することもできます。

[extensibility]
outboundnetworkaccess = 1

TCP ポートを変更する

network.tcpport 設定は、SQL Server が接続をリッスンする TCP ポートを変更します。 既定では、このポート番号は 1433 に設定されています。 ポートを変更するには、次のコマンドを実行します。

  1. network.tcpportset コマンドを使って、mssql-conf スクリプトを root として実行します。

    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 SQL Server が TLS に対して許可する暗号を指定します。 この文字列は、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 ファイルへのパス

TLS 設定の使用例については、SQL Server on Linux への接続の暗号化に関するページを参照してください。

ネットワーク設定

チュートリアル:SSQL Server on Linux で Active Directory 認証を使用する」で、SQL Server on Linux での Active Directory 認証の使用に関する包括的な情報について参照してください。

次のオプションは、mssql-conf を使って構成可能な追加のネットワーク設定です。

オプション 説明
network.disablesssd SSSD への Active Directory アカウント情報のクエリを無効にし、既定で LDAP 呼び出しを行います。 使用できる値は、true または false です。
network.enablekdcfromkrb5conf krb5.conf からの KDC 情報の検索を有効にします。 使用できる値は、true または false です。
network.forcesecureldap 強制的に LDAPS を使用してドメイン コントローラーに接続します。 使用できる値は、true または false です。
network.ipaddress 着信接続用の IP アドレス。
network.kerberoscredupdatefrequency 更新する必要がある kerberos 資格情報のチェック間隔の秒数。 値は整数です。
network.privilegedadaccount Active Directory 認証に使用する特権 Active Directory ユーザー。 値は <username> です。 詳細については、SQL Server on Linux で Active Directory 認証を使用する
uncmapping UNC パスをローカル パスにマップします。 たとえば、「 sudo /opt/mssql/bin/mssql-conf set uncmapping //servername/sharename /tmp/folder 」のように入力します。
ldaphostcanon バインド ステップ中に OpenLDAP でホスト名を正規化するかどうかを設定します。 使用できる値は、true または false です。

トレース フラグを有効または無効にする

この 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. 同様の方法で、1 つ以上の有効なトレース フラグは、それらを指定して 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 format

次の /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
[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

次のステップ