MSSQL Server 2022 на Synology NAS DS923+ – невозможно создать базы данных / невозможно подключиться через Azure Data Studio

Вопрос или проблема

У меня есть Synology NAS DS923+ с 32 ГБ ОЗУ и 16 ТБ хранилища (Raid 5; осталось 10,9 ТБ).

Я хочу использовать его как сервер для обмена файлами для клиентского программного обеспечения. Это программное обеспечение также использует MSSQL Server 2022 Express в качестве базы данных.

Мой план состоял в том, чтобы разместить как файлы, так и базу данных на NAS.

Я использовал изображение MS Docker для MSSQL Server 2022 и установил его в контейнере Docker, следуя этому руководству: https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&preserve-view=true&tabs=cli&pivots=cs1-bash

Чтобы сохранить данные после перезапуска контейнера, я смонтировал том, например, “/volume7/sqlserver/storage:/var/opt/mssql”. Я установил разрешения, следуя этому руководству: https://learn.microsoft.com/de-de/sql/linux/sql-server-linux-docker-container-security?view=sql-server-ver16

root@NAS-Syn:~# cd /volume7/
root@NAS-Syn:/volume7# chgrp -R 0 sqlserver/
root@NAS-Syn:/volume7# chmod -R g=u sqlserver/
root@NAS-Syn:/volume7# chown -R 10001:0 sqlserver/

Контейнер работает и остается активным в течение многих дней без ошибок. Когда я пытаюсь подключиться через SSH

sudo docker exec -it sqlserver bash

и войти в SQLCMD

mssql@CONTAINER:/$ /opt/mssql-tools18/bin/sqlcmd -S localhost -No -U SA -P "$MSSQL_SA_PASSWORD"

это заканчивается тем, что консоль ждет ввода

1>

Я мог выбрать все существующие базы данных и т. д., но для любого изменения ввод больше не отображает реакцию, как

1> CREATE DATABASE TestDB;
2> SELECT Name from sys.databases;
3> GO

Это остается так, и через некоторое время я могу остановить это с помощью CTRL+C. То же самое для любых других изменений, таких как действия ALTER и т. д.

Кажется, не хватает разрешений и невозможно записывать в эту папку “/var/opt/mssql” – я даже установил chmod -R 777 без какого-либо результата. Может ли идея о разрешениях быть верной или я что-то упускаю?

Я также попробовал другой том как для Container Manager (docker), так и для его контейнеров, используя файловую систему ext4 вместо bfrs – без результата.

Ответ или решение

Вопрос о невозможности создать базы данных и подключиться через Azure Data Studio к MSSQL Server 2022, установленному на Synology NAS DS923+, требует комплексного подхода для решения проблемы. В этой ситуации мы имеем дело с несколькими потенциальными причинами, связанными с настройками разрешений, использования Docker-контейнера, а также взаимодействием с SQL Server на Linux.

Теория

Проблемы создания баз данных и работы с ними в данном контексте могут быть вызваны несколькими основными факторами:

  1. Разрешения файловой системы: SQL Server, установленный в контейнере, должен иметь надлежащие уровни доступа к директориям, где хранятся базовые файлы данных. Недостаточные разрешения могут приводить к невозможности выполнения операций над базами данных.

  2. Настройки Docker-контейнера: Некорректная конфигурация контейнера может ограничивать SQL Server в доступе к файловой системе NAS. Это также может включать вопросы с монтированием томов или настройками безопасности Docker.

  3. Версии и совместимость платформ: В некоторых случаях может возникнуть несовместимость между версиями используемого программного обеспечения на Docker и SQL Server, что также может вызывать проблемы.

Пример

На практике было осуществлено следующее:

  • Установлен Docker-контейнер с SQL Server 2022 на Synology NAS.
  • Настроено монтирование файловой системы NAS в контейнере, чтобы обеспечить сохранность данных после перезапуска контейнера.
  • Использованы рекомендуемые команды для установки разрешений на каталоги, где хранятся данные SQL Server.

Несмотря на проделанные шаги, наблюдаются проблемы с проведением изменений в базах данных (например, создание или изменение баз данных), что свидетельствует о проблеме на одном из этапов конфигурации.

Применение

Для решения этой проблемы, предлагаем выполнить следующие шаги и проверки:

  1. Проверка разрешений: Убеднитесь, что каталог /var/opt/mssql, смонтированный в контейнере, действительно имеет необходимые права доступа. Выполните команду проверки разрешений и убедитесь, что пользователь, под которым запускается SQL Server, имеет полные права.

    ls -l /volume7/sqlserver/storage
  2. Перепроверка конфигурации Docker и монтирования: Убедитесь в правильности файлов конфигурации Docker и параметрах монтирования. Для этого можно проверить файл docker-compose.yml или команды Docker, использованные для запуска контейнера, убедиться, что параметры монтирования указаны корректно.

  3. Журналы SQL Server и Docker: Проверьте журналы ошибок SQL Server и Docker на наличие сообщений об ошибках, которые могут указывать на конкретную проблему. Это можно сделать с помощью следующих команд:

    docker logs <container_id>
    sudo less /var/opt/mssql/log/errorlog
  4. Обновление Docker и SQL Server: Убедитесь, что вы используете последнюю версию Docker и контейнеров SQL Server. Инсталлирование последних обновлений может решить некоторые несовместимости и баги.

  5. Тестирование сети: Убедитесь, что сеть между вашей рабочей станцией и Docker настроена правильно, и коммуникации не блокируются сетевыми политиками или FW. Проверьте порты, которые использует SQL Server, обычно это 1433.

  6. Альтернативные интернет-ресурсы и поддержка: Если проблема не решена, рекомендуется обратиться к сообществу Synology и Docker, а также технической поддержке Microsoft.

Каждый из этих шагов должен выполняться последовательно и тщательно, чтобы диагностировать и устранить настоящую причину проблемы. Надеюсь, они помогут разрешить вашу ситуацию и позволят успешно работать с базами данных SQL Server на Synology NAS.

Оцените материал
Добавить комментарий

Капча загружается...