SQL Server на Linux: известные проблемы

В следующих разделах описываются известные проблемы с SQL Server на Linux.

Общие

В следующей таблице перечислены наиболее распространенные проблемы с SQL Server на Linux.

Проблема Решение
Длина имени узла, в котором установлен SQL Server, должна составлять 15 символов или меньше. Измените имя /etc/hostname на значение 15 символов длиной или меньше.
Вручную установка системного времени в обратном направлении приводит к остановке обновления внутреннего системного времени SQL Server в ядро СУБД. Перезапуск SQL Server.
Поддерживаются только установки с одним экземпляром. Если вы хотите иметь несколько экземпляров на определенном узле, рассмотрите возможность использования виртуальных машин или контейнеров Linux.
диспетчер конфигурации SQL Server не удается подключиться к SQL Server на 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).

Databases

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

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

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

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

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

  • Резервные копии с сжатием TDE, сделанные с помощью SQL Server 2019 (15.x) с накопительным пакетом обновления 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по умолчанию. После внесения этого изменения перезапустите службу.

Network

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

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

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

    • cat /proc/cmdline печатает загрузочную 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 (16.x).

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

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

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

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

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

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

Локализация

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

    ЮникодEncodeError: кодек 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...". А для установок на языках, отличных от романских, это предложение может отсутствовать полностью. В отсутствующем предложении должна отображаться следующая локализованная строка:

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

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

В этом выпуске доступны не все фильтры, включая фильтры для документов Microsoft Office. Список поддерживаемых фильтров см. в статье Установка полнотекстового поиска SQL Server в 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:

  • База данных каталога служб Integration Services
  • Запланированное выполнение пакета по агент SQL Server
  • Проверка подлинности 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 на 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) для RHEL 9 и Ubuntu 22.04 при включении стека высокой доступности и аварийного восстановления с помощью Pacemaker можно столкнуться с проблемами при автоматической и ручной отработке отказа. Эти проблемы в настоящее время ограничены стеком ha Pacemaker. Другие стеки высокого уровня доступности, включая HPE Serviceguard и DH2i DxEnterprise, не имеют этих проблем.

Группа доступности постоянно переключает основную роль

При работе с группами доступности (AGs) в SQL Server 2022 (16.x) в RHEL 8, Ubuntu 20.04 и более поздних версиях можно столкнуться с ситуацией, когда основная роль в группе доступности переключается с одного узла на другой непрерывно. В настоящее время вы можете обойти проблему, выполнив следующие действия.

  1. Обновите свойство failure-timeout ресурса следующимag_cluster:0s

    pcs resource update ag_cluster meta failure-timeout=0s
    

    Дополнительные сведения см. в разделе "Настройка кластера Pacemaker для групп доступности SQL Server".

  2. Сброс количества неудач в кластере Pacemaker:

    crm_failcount -r ag_resource_name -delete
    

Служба машинного обучения

Применимо только к 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 Машинное обучение, как описано.

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

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

    sudo systemctl restart mssql-launchpadd