Поделиться через


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 записи по умолчанию — английский. Измените язык учетной записи sa с помощью инструкции ALTER LOGIN.
Поставщик 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).

Базы данных

  • Базу данных master нельзя переместить с помощью служебной программы mssql-conf. Другие базы данных можно переместить с помощью mssql-conf.

  • При восстановлении базы данных, резервная копия которой была сделана в SQL Server на Windows, необходимо использовать предложение WITH MOVE в инструкции Transact-SQL. Для получения дополнительных сведений см. в разделе Перенос базы данных SQL Server из Windows в Linux с помощью резервного копирования и восстановления.

  • Некоторые алгоритмы (наборы шифров) для протокола TLS не работают должным образом с SQL Server on Linux. Это приводит к сбоям подключения при попытке подключиться к SQL Server и проблемам с установкой подключений между репликами в группах высокой доступности.

    Чтобы устранить эту проблему, измените скрипт конфигурации mssql.conf для SQL Server on Linux, чтобы отключить проблемные наборы шифров, выполнив следующие действия:

    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
      
  • базы данных SQL Server 2014 (12.x) в Windows, которые используют In-Memory OLTP, не могут быть восстановлены в SQL Server on Linux. Если база данных SQL Server 2014 (12.x) использует In-Memory OLTP, сначала обновите базы данных до более новой версии SQL Server на Windows. Затем его можно переместить в SQL Server под управлением Linux с помощью резервного копирования и восстановления или отсоединения и подключения.

  • Разрешение ADMINISTER BULK OPERATIONS пользователя на данный момент не поддерживается в Linux.

  • Сжатые с помощью TDE резервные копии, сделанные с помощью SQL Server 2019 (15.x) CU 16 и более поздних версий, не могут быть восстановлены до предыдущих версий CU SQL Server 2019 (15.x). Дополнительные сведения см. в разделе Исправление: при выполнении инструкции RESTORE LOG или RESTORE DATABASE возникает ошибка 3241.

    Прозрачное шифрование данных (TDE) - сжатые резервные копии, созданные с использованием предыдущих версий CU SQL Server 2019 (15.x), все еще можно восстановить с помощью SQL Server 2019 (15.x) CU 16 и более поздних версий.

  • При установке SQL Server 2022 (16.x) в Ubuntu 22.04 может появиться следующее сообщение об ошибке: Failed to start Microsoft SQL Server Database Engine. Если просмотреть журнал ошибок, вы увидите неверный путь к системным базам данных.

    Чтобы обойти эту проблему, запустите экземпляр в однопользовательском режиме и используйте ALTER DATABASE ... MODIFY FILE для перемещения настроенного расположения системных баз данных в расположение /var/opt/mssql/dataпо умолчанию. После внесения этого изменения перезапустите службу.

Сеть

Функции, которые включают исходящие TCP-подключения из процесса sqlservr, такие как связанные серверы, PolyBase или группы высокой доступности, могут не работать, если выполняются оба следующих условия:

  • Целевой сервер указан в виде имени узла, а не IP-адреса.

  • В ядре для экземпляра источника отключен протокол IPv6. Чтобы проверить, включена ли в ядре поддержка протокола IPv6, необходимо успешно выполнить все следующие проверки.

    • cat /proc/cmdline отображает командную строку загрузки текущего ядра. Выходные данные не должны содержать ipv6.disable=1.
    • Каталог /proc/sys/net/ipv6/ должен существовать.
    • Программа на языке C, которая вызывает socket(AF_INET6, SOCK_STREAM, IPPROTO_IP), должна выполняться успешно — системный вызов должен возвращать fd != -1, а не завершаться с ошибкой EAFNOSUPPORT.

Конкретная ошибка зависит от функции. Для связанных серверов отображается ошибка времени ожидания входа. Для групп ALTER AVAILABILITY GROUP JOIN доступности DDL в дополнительном объекте завершится сбоем через пять минут с ошибкой download configuration timeout .

Чтобы обойти эту проблему, выполните одно из следующих действий.

  • Используйте IP-адреса вместо имен узлов, чтобы указать целевой объект подключения по протоколу TCP.

  • Включите протокол IPv6 в ядре, удалив ipv6.disable=1 из командной строки загрузки. Метод зависит от дистрибутива Linux и загрузчика, например grub. Если вы хотите отключить протокол IPv6, это можно сделать, задав net.ipv6.conf.all.disable_ipv6 = 1 в конфигурации sysctl (например, /etc/sysctl.conf). Хотя этот параметр не позволяет сетевому адаптеру системы получать IPv6-адрес, он позволяет функциям sqlservr работать.

TLS 1.3 не поддерживается в SQL Server 2022 г.

Применяется только к: SQL Server 2022 (16.x).

Хотя tls 1.3 поддерживается в SQL Server 2022 (16.x) для Windows, необходимо использовать TLS 1.2 в Linux.

Замечание

TLS 1.3 поддерживается для SQL Server 2025 (17.x) в Ubuntu 22.04, Ubuntu 24.04, RHEL 9 и RHEL 10. ПРОТОКОЛ TLS 1.3 включен по умолчанию.

Сетевая файловая система NFS

При использовании удаленных общих папок NFS в рабочей среде необходимо обратить внимание на следующие требования к поддержке.

  • Используйте NFS версии 4.2 или более поздней. Более старые версии NFS не поддерживают необходимые возможности, такие как использование команды fallocate и создание разреженных файлов, общие для современных файловых систем.

  • Найдите только /var/opt/mssql каталоги на подключении NFS. Другие файлы, такие как SQL Server системные двоичные файлы, не поддерживаются.

  • При подключении удаленной общей папки клиенты NFS должны использовать параметр nolock.

Локализация

  • Если ваша локаль не английская (en_us) во время установки, в сеансе bash или в терминале необходимо использовать кодировку UTF-8. Если вы используете кодировку ASCII, может появиться ошибка, аналогичная следующим выходным данным:

    UnicodeEncodeError: кодек ascii не может кодировать символ u'\xf1' в позиции 8: порядковый номер не в диапазоне(128)

    Если вы не можете использовать кодирование UTF-8, запустите программу установки с помощью переменной среды MSSQL_LCID, чтобы указать требуемый язык.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • При запуске mssql-conf setup и выполнении неанглоязычной установки SQL Server, неправильные расширенные символы могут отображаться после локализованного текста "Настройка SQL Server...". Или, для установок на языках, не основанных на латинице, это предложение может полностью отсутствовать. В отсутствующем предложении должна отображаться следующая локализованная строка:

    Идентификатор PID лицензирования успешно обработан. Новый выпуск — [<Имя> выпуска].

    Эта строка выводится только для информационных целей, не влияет на успешную установку SQL Server каким-либо образом.

Не все фильтры доступны в этом выпуске, включая фильтры для Microsoft Office документов. Список поддерживаемых фильтров см. в разделе Install SQL Server Full-Text Search в Linux.

SQL Server Integration Services (SSIS)

Пакет mssql-server-is не поддерживается в SUSE Linux Enterprise Server (SLES). Пакет поддерживается в Ubuntu и Red Hat Enterprise Linux (RHEL).

Пакеты Integration Services могут использовать подключения ODBC на Linux. Эта функция была протестирована с помощью драйверов SQL Server и MySQL ODBC, но также должна работать с любым драйвером ODBC Юникод, который соответствует спецификации ODBC. На этапе проектирования можно предоставить либо DSN, либо строку подключения для подключения к данным ODBC; кроме того, можно использовать аутентификацию Windows. Дополнительные сведения см. в записи блога с объявлением поддержки ODBC в Linux.

Следующие функции не поддерживаются в этом выпуске при запуске пакетов служб SSIS в Linux:

  • База данных каталога служб интеграции
  • Запланированное выполнение пакета через SQL Server Agent
  • проверка подлинности Windows
  • Сторонние компоненты
  • Отслеживание измененных данных (CDC)
  • Горизонтальное масштабирование служб Integration Services
  • пакет дополнительных компонентов Azure для служб SSIS
  • Поддержка Hadoop и HDFS
  • Microsoft Connector для SAP BW

Список встроенных компонентов SSIS, которые сейчас не поддерживаются или поддерживаются с ограничениями, см. в разделе Ограничения и известные проблемы для служб SSIS на Linux.

Дополнительные сведения о службах SSIS в Linux см. в следующих статьях.

SQL Server Management Studio (SSMS)

Следующие ограничения применяются к SQL Server Management Studio при подключении Windows к SQL Server on Linux.

  • Планы обслуживания не поддерживаются.

  • Система управления данными (MDW) и сборщик данных в SQL Server Management Studio не поддерживаются.

  • Компоненты пользовательского интерфейса SQL Server Management Studio, которые используют аутентификацию Windows или опции журнала событий Windows, не работают с Linux. Эти функции по-прежнему можно использовать с другими параметрами, такими как учетные записи SQL Server.

  • Количество сохраненных файлов журнала невозможно изменить.

Высокий уровень доступности и аварийное восстановление

Применяется только к: SQL Server 2022 (16.x).

При запуске SQL Server 2022 (16.x) CU 16 и более ранних версий в RHEL 9 в качестве ограниченного приложения с поддержкой SELinux кластеризация Pacemaker может не работать должным образом. Чтобы использовать возможности кластеризации Pacemaker, необходимо установить SQL Server 2022 (16.x) в качестве неопределенного приложения с включенной функцией SELinux. Эта проблема устранена в SQL Server 2022 (16.x) CU 17.

Службы Machine Learning

Применяется только к: SQL Server 2022 (16.x).

Для пакетов SQL Server 2022 (16.x) для RHEL 9 и Ubuntu 22.04 необходимо учитывать некоторые предварительные условия с cgroup-v1 перед установкой служб машинного обучения.

  1. В качестве предусловия необходимо включить cgroup-v1, как указано в документе «Использование cgroupfs для управления cgroups» для Red Hat Enterprise Linux 9 от Red Hat.

  2. Затем следуйте инструкциям, чтобы установить SQL Machine Learning Services, как описано.

  3. Отключите изоляцию сетевого пространства имен.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Перезапустите mssql-launchpadd службу, чтобы эти изменения вступили в силу.

    sudo systemctl restart mssql-launchpadd
    

Известные проблемы в SQL Server 2025 г.

Следующие проблемы влияют на SQL Server 2025 г. (17.x).

SQL Server on Linux не удается запустить на компьютерах с гибридной архитектурой ЦП

Issue: Экземпляры SQL Server в Linux могут не запускаться, если компьютер использует процессор Intel гибридной архитектуры 12-го поколения или более поздней версии, а операционная система узла — Linux.

Может появиться сообщение об ошибке, аналогичное следующему выводу:

Reason: 0x00000004 Message: ASSERT: Expression=(result * DrtlGetProcessorCoreCount() == DrtlGetProcessorCount()) File=LibOS\Windows\Kernel\SQLPal\common\dk\sos\src\sosnumap.cpp Line=208

Если вы хотите использовать операционную систему узла Linux, вы можете обойти проблему, отключив ядра эффективности (E-core) в BIOS. Если вы используете контейнеры или гипервизор, например Hyper-V на Windows (включая WSL), вы не пострадали.

Локальные модели ONNX не поддерживаются в операционных системах Linux

CREATE EXTERNAL MODEL локальные модели ONNX, размещенные непосредственно на SQL Server, в настоящее время недоступны для Linux на SQL Server 2025 (17.x).