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 секунды были самыми низкими, которые я мог пройти перед запросом.