无法登录 mssql-server-linux 容器中的 SQL Server

2023-12-01

我不情愿地执行尝试在 docker 容器中使用 Microsoft SQL Server 的耗费灵魂的任务,并且正在使用 Microsoft 提供的 mssql-server-linux 盒子。但无论我做什么我都无法登录。

这是我的 docker-compose.yml 文件:

version: '2'

services:
  db:
    build:
      context: ./docker/db
    environment:
      ACCEPT_EULA: "Y"
      SA_PASSWORD: "My@Super@Secret"
    expose:
      - 1433

这是我的 Dockerfile:

FROM microsoft/mssql-server-linux

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY startup.sh setup.sql ./

CMD /bin/bash ./startup.sh

这是我的startup.sh:

/opt/mssql/bin/sqlservr & /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "My@Super@Secret" -d master -i setup.sql

这是我的 setup.sql:

CREATE DATABASE DemoData;

每次尝试使用此入口点启动容器都会导致以下错误:

SQL Server is now ready for client connections. This is an informational message; no user action is required.
2017-09-27 17:30:00.85 spid10s     Polybase feature disabled.
2017-09-27 17:30:00.85 spid10s     Clearing tempdb database.
2017-09-27 17:30:01.09 Logon       Error: 18456, Severity: 14, State: 7.
2017-09-27 17:30:01.09 Logon       Login failed for user 'sa'. Reason: An error occurred while evaluating the password. [CLIENT: 172.19.0.2]
Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : Login failed for user 'sa'..
db_1     | Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : TCP Provider: Error code 0x2749.
db_1     | Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online..

显然,删除入口点,进入 /bin/bash 并运行命令或尝试手动连接命令会产生相同的结果。我尝试过多种不同的密码。

我讨厌微软...提前致谢!


您正在后台启动 SQL Server,方法是使用&。因此,您的 sqlcmd 将在启动 SQL Server 后立即启动,而不是等到它准备好接受连接。

通常你可以通过使用双&号来解决这个问题&&。通过使用&&在第一个命令成功完成之前,第二个命令不会启动。但是,SQL Server 是一个长时间运行的进程,因此您的第二个命令永远不会启动。

您可以通过在启动 SQL Server 后添加睡眠命令来解决此问题。

/opt/mssql/bin/sqlservr & sleep 30 && /opt/mssql-tools/bin/sqlcmd -S localhost etc.

sqlcmd 将在启动 SQL Server 后 30 秒执行。如果 SQL Server 仍然不可用,请尝试延长睡眠时间。

sqlcmd 完成后,docker 容器将停止,因为不再有前台进程。 SQL Server 正在后台运行,而 docker 需要一个活动的前台进程。

Add the wait命令再次开始等待 SQL Server 进程。

/opt/mssql/bin/sqlservr & sleep 30 && /opt/mssql-tools/bin/sqlcmd -S localhost etc. && wait

免责声明我自己刚刚开始使用 Linux 和 Docker,所以可能会有更好的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法登录 mssql-server-linux 容器中的 SQL Server 的相关文章

随机推荐

  • 无法执行 Cython 包装的 Python 代码

    我正在使用 Cython 导出 Python 代码的 C API 该应用程序将在 Ubuntu 上执行 项目文件已存在here 我正在包装的函数读取图像的文件名并显示图像 这Show Img pyx文件如下所示 import cv2 cde
  • 动态 SQL 结果存入 SQL 存储过程中的临时表

    代码如下 ALTER PROCEDURE dbo pdpd DynamicCall SQLString varchar 4096 null AS Begin create TABLE T1 column 1 varchar 10 colum
  • 从 Chrome 扩展程序连接到数据库?

    我正在构建一个 Chrome 扩展程序 该扩展程序仅适用于我工作的公司内的人员 该扩展需要输入 可以通过对共享 MySQL 数据库服务器 所有员工都可以以只读权限访问 的简单查询来生成输入 问题是 由于扩展都是客户端 主要是 Javascr
  • 检查是否安装了 MS Access 的 OleDb 12.0 驱动程序

    我有一个 C 应用程序 它使用 OleDb 12 0 驱动程序连接到 MS Access 数据库 如果未安装 OleDb 12 0 驱动程序 应用程序将引发没有相关解释的异常 public static class Program priv
  • 使用 Node.js 从网页中抓取 URL

    我正在尝试从网站上抓取所有 URL 并将它们放入一个数组中 我有一个关于数组索引的问题 如果我将像 2 这样的索引号添加到 array 2 中 命令行会回复 未定义 如果我删除索引并打印整个数组 它会逐行打印所有 URL 我希望每个 URL
  • 调用跨线程事件的最简洁方法

    我发现 NET 事件模型是这样的 我经常在一个线程上引发一个事件并在另一个线程上侦听它 我想知道将事件从后台线程编组到 UI 线程的最简洁方法是什么 根据社区的建议 我使用了这个 earlier in the code mCoolObjec
  • 使用 WPF 应用程序的条码扫描仪

    我有一个条形码扫描仪 蓝牙 连接到我的计算机 用于扫描一些条形码 扫描仪的工作方式与键盘完全相同 并返回扫描到的任何内容 在我的 WPF 应用程序中 我有一些文本框供用户手动输入产品编号 修订号 箱号和批号 我希望用户能够扫描 QR Bar
  • 如何在开发 LAMP 服务器上运行多个版本的 PHP 5.x?

    我需要使用多个版本的 PHP 5 x 测试我的 PHP 应用程序 例如 PHP 5 0 0 和 PHP 5 2 8 有没有一种方法可以配置开发 LAMP 服务器 以便我可以使用多个版本的 PHP5 快速测试应用程序 在 CentOS 中 您
  • 删除 robots.txt 后是否会产生后果?

    我发布了一个网站 由于不依赖于我的误解 我不得不在索引之前阻止所有页面 其中一些页面已经链接到社交网络上 因此为了避免不良的用户体验 我决定将以下代码插入到 robots txt 中 User agent Disallow 我收到了关于网站
  • iTextSharp PDF 使用 C# 读取突出显示的文本(突出显示注释)

    我正在开发一个 C winform 应用程序 将 pdf 内容转换为文本 除 pdf 突出显示文本中的内容外 所有必需的内容均被提取 请帮助获取工作示例以提取 pdf 中突出显示的文本 我在项目中使用 iTextSharp dll 假设您正
  • .htaccess URL 屏蔽而不是重定向 [关闭]

    Closed 这个问题是无关 目前不接受答案 我试图掩盖 URL 就像真实的 URL 一样www somedomain com subfolder index php p page3表明www somedomain com subfolde
  • 有什么方法可以解码字符串吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何解码字符串 Java 如何像 HttpUtility HtmlDecode 一样解码 Java 中的 HTML 字符实体 Hi 我有像例如这样的字符串 s 需要像这样转换 s 请帮我这里 提前致谢
  • Laravel 4:一个模型可以服务多个数据库表吗?

    在我的应用程序中 我有几个 mysql 表 多伦多 温哥华 蒙特利尔等 并且我使用 DB 类来处理它们 例如 data DB select select from toronto where id array id 我想做的是开始使用 El
  • 将 CSS 过渡/动画减慢为“慢动作”

    On a Mac if you hold the Shift key and perform an action that involves animation it will slow down the animation For exa
  • 全局命名空间会被污染是什么意思?

    全局命名空间会被污染是什么意思 我真的不明白全局命名空间被污染意味着什么 关于垃圾收集的快速说明 当变量失去作用域时 它们将有资格进行垃圾回收 如果它们的作用域是全局的 那么在全局命名空间失去作用域之前 它们将不符合收集条件 这是一个例子
  • GitHub 推/拉错误

    我对 GitHub 有点陌生 我刚刚创建了我的帐户并进行了设置等 我非常仔细地按照以下步骤操作http help github com create a repo 但是当我执行最后一个命令 git push u origin master
  • 如何在Firestore中保存时间戳?

    我正在开发一个聊天应用程序 我想存储我的消息的时间戳 我的消息数据类是 import com google firebase firestore ServerTimestamp import java util Date public cl
  • Python 中的链式比较数字范围

    我有以下功能 def InRange number return 5 lt number gt 1 如果使用链式比较该数字不在 1 到 5 的范围内 我希望此值为 false 但似乎无法正确执行此操作 有什么建议么 你想要这样的 def I
  • 如何将文件从 JavaScript 传递到 PHP? [复制]

    这个问题在这里已经有答案了 是否可以将文件从 JavaScript 传递到 PHP 最好使用ajax 如果我们有以下代码
  • 无法登录 mssql-server-linux 容器中的 SQL Server

    我不情愿地执行尝试在 docker 容器中使用 Microsoft SQL Server 的耗费灵魂的任务 并且正在使用 Microsoft 提供的 mssql server linux 盒子 但无论我做什么我都无法登录 这是我的 dock