Sql-агент не запускается в контейнере docker Ubuntu SQL Server в контейнере azure

#sql-server #docker #azure-container-instances #azure-container-registry

#sql-сервер #docker #azure-container-instances #azure-container-registry

Вопрос:

Я использую docker для развертывания sql-сервера linux в azure.

И я не могу запустить агент Sql-Server в экземпляре контейнера в Ubuntu в azure. Sql-сервер запускается нормально, но не Sql-агент. Я пробовал использовать разные версии SQL-Server.

Локально он отлично работает с этим примером:

 docker run -d -p 15789:1433 `
--env ACCEPT_EULA=Y `
--env SA_PASSWORD=Testing1122 `
--env MSSQL_AGENT_ENABLED=True `
--name testcontainer `
mcr.microsoft.com/mssql/server:2019-GDR1-ubuntu-16.04
  

введите описание изображения здесь

Но при добавлении того же образа в реестр контейнеров Azure, а затем в экземпляр контейнера он не работает:

введите описание изображения здесь

В журнале для контейнера я вижу следующую ошибку, которая, я не уверен, связана ли она с тем, что агент не запускается:

 2020-10-20 14:36:24.91 spid35s     Error: 39002, Severity: 16, State: 1.
2020-10-20 14:36:24.91 spid35s     SQL failed to boot extensibility for error code 0x80070005.
2020-10-20 14:36:24.91 spid35s     InitializeXdbPkgLauncher failed. ErrorCode: 0x80004005.
  

Кто-нибудь, кто знает, почему это не работает или как это можно исправить, чтобы иметь возможность запускать его в экземпляре контейнера Azure?

Комментарии:

1. Планировалось использовать агент для выполнения запланированных резервных копий, но на данный момент (и, возможно, позже) Я буду использовать эту службу для запланированных резервных копий: sqlbackupandftp.com что кажется приятным, например, иметь резервные копии в Dropbox.

Ответ №1:

У нас была аналогичная проблема, и мы выяснили, что это связано с ограничением, существующим в экземплярах контейнера Azure: агент sql не может быть включен (выглядит включенным, но на самом деле это не так), если длина имени экземпляра превышает 15 символов. К сожалению, имена экземпляров автоматически назначаются кластером Kubernetes во время создания контейнера, и вы не можете это контролировать. Проголосуйте за эту идею, если хотите, чтобы проблема была решена (https://feedback.azure.com/forums/602224-azure-container-instances/suggestions/42509800-support-setting-of-hostname).

Ответ №2:

Согласно моему тесту, изображение mcr.microsoft.com/mssql/server:2019-GDR1-ubuntu-16.04 имеет ту же ошибку как в локальном, так и в экземпляре контейнера Azure. Здесь проблема показывает, что это ошибка в SQL Server 2019. И я пытаюсь использовать изображение mcr.microsoft.com/mssql/server:2017-CU21-ubuntu-16.04 , и проблем нет. Если вы не возражаете, попробуйте.

Комментарии:

1. Спасибо за ваше предложение. Я пытался использовать 2017, но, к сожалению, с теми же результатами для моего экземпляра контейнера azure. Я не понимаю, почему это работает, когда я запускаю его локально. Не уверен, может ли это иметь какое-то отношение к проблеме, описанной здесь: github.com/microsoft/mssql-docker/issues/503

2. @Sgedda Как вы проверяете, все ли идет хорошо?

3. Я запускал контейнер docker локально как команду выше в Windows, которая отлично работала для меня даже с 2019. А как насчет вас? @Charles Xu

4. @Sgedda Изображение 2019 также плохо работает в моей локальной Windows. Он выдает ту же ошибку. Я предполагаю, что в моей Windows что-то упущено.

5. Это странно, я попробую на другой машине и сообщу вам о результатах.