编写一个脚本以在 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 并将它们放在我在这里调用的另一个文件中;他们都给出了同样的错误。