AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 185045
Accepted
Solomon Rutzky
Solomon Rutzky
Asked: 2017-09-05 13:37:37 +0800 CST2017-09-05 13:37:37 +0800 CST 2017-09-05 13:37:37 +0800 CST

Linux 上的 SQL Server 在初始启动时挂起,没有错误,也没有新的/更新的 ErrorLog 文件

  • 772

我在 Linux (Ubuntu 16.04) 上使用 SQL Server 2017,Release Candidate 2 (RC2)。

当服务器启动时,SQL Server 通常也会启动。但由于某种原因,SQL Server 将不再启动。至少我无法使用sqlcmd连接到它。我现在每次都收到 ODBC 超时(“Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server ”)错误:

Login timeout expired.  
TCP Provider: Error code 0x2749.  
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..

但是,当我运行时:

ps aux | grep mssql

我收到两个返回的条目,表明mssql用户正在运行该sqlservr进程。

此外,/var/opt/mssql/log/中的错误日志文件在我启动 VM(或重新启动服务)时没有时间戳匹配,该文件中也没有任何新条目。

并且,在/var/log/messages中,所有显示的是:

这是一个评估版本。评估期还剩 [141] 天。

如果我运行systemctl status mssql-server,那么我会得到以下信息:

● mssql-server.service - Microsoft SQL Server 数据库引擎
已加载:已加载(/lib/systemd/system/mssql-server.service;已启用;供应商预设:已启用)
活动:自 2017 年星期一以来失败(结果:退出代码)- 09-04 20:01:56 英国夏令时;36 秒前
文档:https
://learn.microsoft.com/en-us/sql/linux 进程:8009 ExecStart=/opt/mssql/bin/sqlservr(code=exited,status=255)
主 PID:8009(code=退出,状态=255)

Started Microsoft SQL Server Database Engine.  
This is an evaluation version.  There are [141] days left in the evaluation period.  
Stopping Microsoft SQL Server Database Engine...  
mssql-server.service: Main process exited, code=exited, status=255/n/a  
Stopped Microsoft SQL Server Database Engine.  
mssql-server.service: Unit entered failed state.  
mssql-server.service: Failed with result 'exit-code'.  
sql-server linux
  • 4 4 个回答
  • 5210 Views

4 个回答

  • Voted
  1. Best Answer
    Solomon Rutzky
    2017-09-05T13:37:37+08:002017-09-05T13:37:37+08:00

    这最终成为在工作时不小心的情况root。

    我一直在研究 Linux 上的 SQLCLR 是否可以像在 Windows 中那样访问 app.Config 文件(遗憾的是,它没有:Linux 上的 SQL Server 2017 会忽略应用程序配置文件(如果存在),或者有时会锁定(如果不存在) 't (SQLCLR) ) 并且在某些情况下 SQL Server 会完全锁定。发生这种情况时,阻止它的唯一方法是执行kill -9on sqlservr。有一次我再次启动该服务,我是通过直接执行/opt/mssql/bin/sqlservr 并且在我工作时这样做的root(因此进程本身由 拥有root)。

    sqlservr运行as没有立即出现错误或奇怪的行为root,但是当 VM 重新启动并且 SQL Server 尝试正确启动(即以mssql用户身份运行)时,即它在一开始就卡住了。

    我发现按原样运行的直接后果sqlservr是root/ var/opt/mssql/log/errorlog文件(以及在 SQL Server 启动时创建的其他一些文件)归root(有道理)所有。

    并且,这些文件所拥有的直接后果root是,当进程正确启动(如mssql)时,mssql用户无权将文件重命名为以.1结尾(以及其他任何需要发生的文件,例如默认跟踪等)。但是,它不会出现权限错误,而是永远挂起。

    主要的解决方法是简单地运行以下内容root(我没有尝试将其运行为mssql)。对于以下两个命令,仅在当前不作为sudo时才需要,root因为它会在提示输入密码后运行其后的命令(或其他用户,如果您指定)。 root-u usernameroot

    sudo chown -R  mssql:mssql /var/opt/mssql
    

    次要修复(以确保不再发生这种情况)是正确启动 SQL Server ;-):

    sudo systemctl start mssql-server
    
    • 15
  2. Evan Carroll
    2018-01-05T22:47:41+08:002018-01-05T22:47:41+08:00

    要获得正确的烫发并获得智能错误,您至少需要以下内容......

    # make sure needed directories exist
    sudo mkdir /var/opt/mssql /var/opt/mssql/.system /var/opt/mssql/data /var/opt/mssql/log
    
    # this should be owned by mssql
    sudo chown -R  mssql:mssql /var/opt/mssql
    sudo chmod 770 /var/opt/mssql
    
    # this should be owned by root
    sudo chown -R root:root /opt/mssql
    
    • 1
  3. user210791
    2020-06-17T08:19:38+08:002020-06-17T08:19:38+08:00

    我猜一个文件中的权限是错误的。

    尝试这样做:

    sudo chmod -x /usr/lib/systemd/system/mssql-server.service
    
    • 0
  4. Zlatan
    2021-04-06T04:23:30+08:002021-04-06T04:23:30+08:00

    请也检查一下。

    不要忘记.system下的隐藏文件夹/var/opt/mssql/。

    https://designprincipia.com/i-broke-mssql-server-on-linux

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve