SQL Server on Linux の既知の問題

以下のセクションでは、SQL Server on Linux に関する既知の問題について説明します。

全般

次の表に、SQL Server on Linux に関する最も一般的な問題を示します。

問題 解決策
SQL Server がインストールされているホスト名の長さは 15 文字以下でなければなりません。 /etc/hostname の名前を 15 文字以下の値に変更します。
システム時刻を手動で過去の時間に戻して設定すると、SQL Server はデータベース エンジン内の内部システム時刻の更新を停止します。 SQL Server を再起動してください。
サポートされているのは単一インスタンスのインストールのみです。 特定のホストに複数のインスタンスが必要な場合は、仮想マシンまたは Linux コンテナーの使用を検討してください。
SQL Server Configuration Manager は SQL Server on Linux には接続できません。 なし。
sa ログインの既定の言語は English (英語) です。 解決方法: ALTER LOGIN ステートメントを使用して sa ログインの言語を変更します。
OLE DB プロバイダーによって次の警告がログに記録されます:

Failed to verify the Authenticode signature of 'C:\binn\msoledbsql.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this isn't an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.
必要なアクションはありません。 OLE DB プロバイダーは SHA256 を使用して署名されています。 SQL Server データベース エンジンでは、署名された .dll は正しく検証されません。
mssql-conf を使用してパスワードのリセット コマンドを実行すると、次のエラーがスローされます:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
このエラー メッセージは偽陰性です。 パスワードのリセットが成功し、新しいパスワードを引き続き使用できます。

適用対象: SQL Server 2022 (16.x) コンテナー イメージのみ。

データベース

  • mssql-conf ユーティリティを使用して master データベースを移動することはできません。 他のシステム データベースは mssql-conf で移動できます。

  • Windows 上の SQL Server にバックアップされたデータベースを復元するには、Transact-SQL ステートメントで WITH MOVE 句を使用する必要があります。 バックアップと復元を使用して SQL Server データベースを Windows から Linux に移行します。

  • トランスポート層セキュリティ (TLS) の特定のアルゴリズム (暗号スイート) は、SQL Server on Linux では正常に機能しません。 この結果、SQL Server に接続しようとすると接続エラーが発生し、高可用性グループ内のレプリカ間の接続を確立する際に問題が発生します。

    この問題を解決するには、次の手順を実行して、SQL Server on Linux 用の mssql.conf 構成スクリプトを変更して、問題のある暗号スイートを無効にします。

    1. 次のセクションを /var/opt/mssql/mssql.conf に追加します。 感嘆符 (!) は式を否定します。 これにより、後続の暗号スイートを使用しないように OpenSSL に指示されます。

      [network]
      tlsciphers=AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES128-GCM-SHA256:!ECDHE-ECDSA-AES256-SHA384:!ECDHE-ECDSA-AES128-SHA256:!ECDHE-ECDSA-AES256-SHA:!ECDHE-ECDSA-AES128-SHA:!ECDHE-RSA-AES256-SHA384:!ECDHE-RSA-AES128-SHA256:!ECDHE-RSA-AES256-SHA:!ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-DSS-AES256-SHA256:!DHE-DSS-AES128-SHA256:!DHE-DSS-AES256-SHA:!DHE-DSS-AES128-SHA:!DHE-DSS-DES-CBC3-SHA:!NULL-SHA256:!NULL-SHA
      
    2. 次のコマンドを使用して SQL Server を再起動します。

      sudo systemctl restart mssql-server
      
  • インメモリ OLTP を使用する Windows 上の SQL Server 2014 (12.x) データベースは、SQL Server on Linux に復元できません。 SQL Server 2014 (12.x) データベースでインメモリ OLTP が使用されている場合は、最初にデータベースを SQL Server on Windows の新しいバージョンにアップグレードします。 そうすると、バックアップ/復元またはデタッチ/アタッチを使用して SQL Server on Linux に移動できます。

  • ユーザー権限 ADMINISTER BULK OPERATIONS は、現時点で Linux ではサポートされていません。

  • SQL Server 2019 (15.x) CU 16 以降のバージョンを使用して作成された TDE 圧縮バックアップは、SQL Server 2019 (15.x) の以前の CU バージョンには復元できません。 詳細については、「FIX: RESTORE LOG または RESTORE DATABASE の実行中にエラー 3241 が発生する」を参照してください。

    SQL Server 2019 (15.x) の以前の CU バージョンを使用して作成された Transparent Data Encryption (TDE) 圧縮バックアップは、SQL Server 2019 (15.x) CU 16 以降のバージョンを使用して復元できます。

  • Ubuntu 22.04 に SQL Server 2022 (16.x) をインストールすると、エラー メッセージ Failed to start Microsoft SQL Server Database Engine が表示されることがあります。 エラー ログを確認すると、システム データベースのパスが正しく表示されていません。

    この問題を回避するには、インスタンスをシングル ユーザー モードで起動し、システム データベースの構成された場所を既定の場所 ALTER DATABASE ... MODIFY FILE に移動するために /var/opt/mssql/data を使用します。 この変更を行った後、サービスを再起動します。

ネットワーク

リンク サーバー、PolyBase、可用性グループなど、sqlservr プロセスからの送信 TCP 接続に関連する機能は、次の両方の条件に合致する場合に動作しないことがあります。

  • ターゲット サーバーは、IP アドレスではなくホスト名として指定されます。

  • カーネルでは、ソース インスタンスの IPv6 が無効になっています。 システムのカーネルで IPv6 が有効になっているかどうかを確認するには、次のすべてのテストに合格する必要があります。

    • cat /proc/cmdline は、現在のカーネルのブート コマンドラインを出力します。 この出力に ipv6.disable=1 を含めることはできません。
    • /proc/sys/net/ipv6/ ディレクトリは存在している必要があります。
    • socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) を呼び出す C プログラムが成功する必要があります。syscall は fd != -1 を返して、EAFNOSUPPORT で失敗しない必要があります。

正確なエラーは、機能によって異なります。 リンク サーバーの場合、ログイン タイムアウト エラーが表示されます。 可用性グループの場合、セカンダリの ALTER AVAILABILITY GROUP JOIN DDL は 5 分後に失敗し、download configuration timeout エラーが発生します。

この問題を回避するには、次のいずれかのオプションを使用します。

  • ホスト名ではなく IP を使用して、TCP 接続のターゲットを指定します。

  • ブート コマンド ラインから ipv6.disable=1 を削除して、カーネルで IPv6 を有効にします。 メソッドは、Linux ディストリビューションとブートローダー (grub など) によって異なります。 IPv6 を無効にする場合でも、sysctl 構成 (たとえば、/etc/sysctl.conf) で net.ipv6.conf.all.disable_ipv6 = 1 を設定することによって無効にすることができます。 この設定では、システムのネットワーク アダプターが IPv6 アドレスを取得できませんが、sqlservr の機能を使用できます。

TLS 1.3 はサポートされていません

適用対象: SQL Server 2022 (16.x) のみ。

Windows 用 SQL Server 2022 (16.x) では TLS 1.3 がサポートされていますが、Linux 上では TLS 1.2 を使う必要があります。

Network File System (NFS)

運用環境で Network File System (NFS) のリモート共有を使用する場合は、次のサポート要件に注意してください。

  • NFS バージョン 4.2 以降のバージョンを使用します。 前のバージョンの NFS では、最新のファイル システムに共通する fallocate やスパース ファイルの作成などの必要な機能がサポートされていません。

  • NFS マウント上の /var/opt/mssql ディレクトリのみが検索されます。 SQL Server システム バイナリなどの他のファイルはサポートされていません。

  • リモート共有をマウントするときに NFS クライアントが nolock オプションを使用していることを確認してください。

ローカリゼーション

  • セットアップ時にロケールが英語 (en_us) でない場合は、bash セッション/ターミナルで UTF-8 エンコードを使用する必要があります。 ASCII エンコードを使用すると、次の出力のようなエラーが表示される場合があります。

    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 8: ordinal not in range(128)

    UTF-8 エンコードを使用できない場合は、MSSQL_LCID 環境変数を使用してセットアップを実行し、使用する言語選択を指定します。

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • mssql-conf setup を実行していて、英語以外の SQL Server のインストールを実行していると、ローカライズされたテキストの後に "Configuring SQL Server... (SQL Server を構成中...)" という不適切な拡張文字が表示されます。 または、ラテン語以外のインストールの場合、文が完全に欠落する可能性があります。 欠落している文には、次のローカライズされた文字列が表示される必要があります。

    ライセンス PID は正常に処理されました。 新しいエディションは [<Name> edition] です。"

    この文字列は情報のみを目的として出力され、SQL Server の正常なインストールには影響しません。

このリリースでは、Microsoft Office ドキュメントのフィルターを含め、すべてのフィルターが使用できるわけではありません。 サポートされているフィルターの一覧については、Linux への SQL Server フルテキスト検索のインストールに関するページを参照してください。

SQL Server Integration Services (SSIS)

SUSE Linux Enterprise Server (SLES) では、mssql-server-is パッケージはサポートされていません。 このパッケージは、Ubuntu および Red Hat Enterprise Linux (RHEL) でサポートされています。

Integration Services パッケージでは、Linux 上の ODBC 接続を使用できます。 この機能は SQL Server と MySQL ODBC ドライバーでテストされていますが、ODBC 仕様に準拠するあらゆる Unicode ODBC ドライバーでも動作することが期待されます。 デザイン時、DSN または接続文字列を指定し、ODBC データに接続できます。Windows 認証を使用することもできます。 詳細については、Linux での ODBC サポートの告知ブログ記事を参照してください。

Linux 上で SSIS パッケージを実行する場合、このリリースでは次の機能はサポートされていません。

  • Integration Services カタログ データベース
  • SQL Server エージェントでスケジュールされたパッケージの実行
  • Windows 認証
  • サードパーティ コンポーネント
  • 変更データ キャプチャ (CDC)
  • Integration Services スケール アウト
  • SSIS 用の Azure Feature Pack
  • Hadoop と HDFS のサポート
  • Microsoft Connector for SAP BW

現在サポートされていない、または制限付きでサポートされている組み込み SSIS コンポーネントの一覧については、「Linux の SSIS の制限事項と既知の問題」を参照してください。

Linux の SSIS の詳細については、次の記事を参照してください。

SQL Server Management Studio (SSMS)

SQL Server on Linux に接続されている Windows の SQL Server Management Studio には、次の制限事項が適用されます。

  • メンテナンス プランはサポートされていません。

  • SQL Server Management Studio の管理データ ウェアハウス (MDW) とデータ コレクターはサポートされていません。

  • Windows 認証または Windows イベント ログ オプションを備えた SQL Server Management Studio の UI コンポーネントは、Linux では機能しません。 これらの機能は、SQL Server ログインなどの他のオプションと共に引き続き使用できます。

  • 保持するログ ファイルの数は変更できません。

高可用性とディザスター リカバリー

適用対象: SQL Server 2022 (16.x) のみ。

RHEL 9 および Ubuntu 22.04 用の SQL Server 2022 (16.x) パッケージの場合、Pacemaker で HA/DR スタックを有効にすると、自動フェールオーバーと手動フェールオーバーに関する問題が発生する可能性があります。 これらの問題は、現在 Pacemaker HA スタックに限定されています。 HPE Serviceguard や DH2i DxEnterprise などのその他の HA スタックには、これらの問題はありません。

可用性グループはプライマリ ロールを継続的に切り替える

RHEL 8、Ubuntu 20.04 以降のバージョンの SQL Server 2022 (16.x) で可用性グループ (AG) を操作すると、AG のプライマリ ロールがノード間で継続的に切り替わる状況が発生する場合があります。 現在、以下のこれらの手順で問題を回避できます。

  1. ag_cluster リソース プロパティ failure-timeout を次の 0s に更新します。

    pcs resource update ag_cluster meta failure-timeout=0s
    

    詳細については、「SQL Server 可用性グループの Pacemaker クラスターを構成する」を参照してください。

  2. Pacemaker クラスターの失敗数をリセットします。

    crm_failcount -r ag_resource_name -delete
    

Machine Learning サービス

適用対象: SQL Server 2022 (16.x) のみ。

RHEL 9 および Ubuntu 22.04 用の SQL Server 2022 (16.x) パッケージの場合、Machine Learning service をインストールする前に、cgroup-v1 に伴ういくつかの前提条件を考慮する必要があります。

  1. 前提条件として、Red Hat の「cgroupfs を使用して cgroups Red Hat Enterprise Linux 9 を手動で管理」に従って、cgroup-v1 を有効にする必要があります。

  2. 次に、説明に従って SQL Machine Learning service をインストールします。

  3. ネットワーク名前空間の分離を無効にします。

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. 変更を有効にするために mssql-launchpadd サービスを再起動します。

    sudo systemctl restart mssql-launchpadd