powershell - docker run 和 sqlcmd 一起报错
问题描述
编写一个脚本以在 docker 容器中快速添加一个 SQL Server Linux 实例,然后立即连接到它进行测试。似乎 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 就好了:
手里剑
我已经尝试了 SqlServer 模块中的Invoke-SqlCmd
, SqlCmd
, cmdlet 并将它们放在我在这里调用的另一个文件中;他们都给出了同样的错误。
解决方案
添加Start-Sleep -s 4;
介于docker run
和Invoke-SqlCmd
作品之间。看起来它只是需要一些喘息的空间。4 秒是我在查询之前可以达到的最低时间。
推荐阅读
- javascript - jquery 在点击提交时获取答案(从数据库中获取数据)
- python - 为 Mac 导入 geopandas 一直失败 - 所有报告的解决方案都已尝试
- bash - 如何从另一个文件中删除具有匹配模式的行?
- php - 根据选中的复选框进行过滤
- node.js - 从函数nodejs中的mariadb返回值
- javascript - 开玩笑的存根函数
- javascript - NativeScript http.getJSON 和异步等待
- python - pbkdf2_hmac 在 django 中需要很长时间
- asp.net - 带有可选语言 URL 段的 Asp.Net MVC MapRoute
- c# - 在 C# 上定义方法的正确方法