Docker запускает и sqlcmd вместе ошибки

Составление сценария для быстрого добавления экземпляра SQL Server Linux в Docker-контейнер, а затем немедленное подключение к нему для тестирования. Похоже, команда run и sqlcmd не могут быть запущены в одном и том же сценарии.

Скажем, вы запускаете это в файле.ps1:

  #create the container with sql server
  docker run `
  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Awesome1!" `
     -p 11433:1433 `
     --name shuriken --hostname shuriken --restart=always `
     -d microsoft/mssql-server-linux:2017-latest;

  #try to connect to it
  $ConnectionString = "Server=localhost,11433;Database=master;User Id=sa; Password=Awesome1!";
  $sql = 'SELECT @@SERVERNAME AS ServerName;';
  Invoke-Sqlcmd -ConnectionString $ConnectionString -Query $sql;

Вы получаете ошибку:

Invoke-Sqlcmd: соединение было успешно установлено с сервером, но затем произошла ошибка во время рукопожатия перед входом в систему. (провайдер: провайдер TCP, ошибка: 0 - существующее соединение было принудительно закрыто удаленным хостом.)

Но если после этого вы сразу закомментируете docker run команда, это работает. Подключается к тому же SQL Server просто отлично:

сюрикен

я пробовал Invoke-SqlCmd, SqlCmd, командлеты из модуля SqlServer и размещение их в другом файле, который я здесь называю; все они дают одну и ту же ошибку.

1 ответ

Добавление Start-Sleep -s 4; между docker run а также Invoke-SqlCmd работает. Похоже, просто нужна была передышка. 4 секунды были самыми низкими, которые я мог пройти перед запросом.

Другие вопросы по тегам