Sub*_*i K 45 linux sql-server tcpclient
我正在尝试通过遵循文档https://docs.microsoft.com/pl-pl/sql/linux/quickstart-install-connect-ubuntu?view=sql-server-2017在Linux中设置ms-sql服务器
SQL服务器状态为活动(正在运行)
执行命令时出现以下错误
sqlcmd -S localhost -U SA -P '<YourPassword>'
Run Code Online (Sandbox Code Playgroud)
错误:
Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2746。Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:客户端无法建立连接。
我也通过给出命令来尝试
sqlcmd -S 127.0.0.1 -U SA -P '<YourPassword>'
Run Code Online (Sandbox Code Playgroud)
但是问题没有解决,并且显示相同的错误。
当我尝试输入错误的密码时,它也会显示相同的错误。
请帮助我解决这个问题。提前致谢 !
小智 87
恢复为14.0.3192.2-2会有所帮助。
但是,不仅在从Ubuntu 16.04升级到18.04的情况下,而且在Ubuntu 18.04上的每次SQL Server 2017安装中,也可以使用Ola774指示的方法解决问题。
看来Microsoft现在在cu16中为cu10中应用的ssl版本问题弄乱了自己的补丁(https://techcommunity.microsoft.com/t5/SQL-Server/Installing-SQL-Server-2017-for-Linux -Ubuntu-18-04-LTS / ba-p / 385983)。但是链接ssl 1.0.0库是可行的。
因此,请执行以下操作:
停止SQL Server
sudo systemctl stop mssql-server
Run Code Online (Sandbox Code Playgroud)通过以下方式打开服务配置的编辑器
sudo systemctl edit mssql-server
Run Code Online (Sandbox Code Playgroud)这将为原始服务配置创建替代。第一次使用覆盖文件(或更确切地说是“插入文件”)为空是正确的。
在编辑器中,将以下行添加到文件中并保存:
[Service]
Environment="LD_LIBRARY_PATH=/opt/mssql/lib"
Run Code Online (Sandbox Code Playgroud)创建指向OpenSSL 1.0的符号链接以供SQL Server使用:
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /opt/mssql/lib/libssl.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /opt/mssql/lib/libcrypto.so
Run Code Online (Sandbox Code Playgroud)启动SQL Server
sudo systemctl start mssql-server
Run Code Online (Sandbox Code Playgroud)小智 31
如果您在使用 OpenSSL1.1.1 的 Debian 10 上遇到客户端问题,修复方法是恢复到以前默认的较弱密钥长度。这样做:
修改/etc/ssl/openssl.cnf配置文件如下(仅供参考,参见下面 Debian 10 中 OpenSSL 1.1.1 的已知问题):
将最后一行从 更改CipherString = DEFAULT@SECLEVEL=2为CipherString = DEFAULT@SECLEVEL=1
https://github.com/microsoft/msphpsql/issues/1021
https://wiki.debian.org/ContinuousIntegration/TriagingTips/openssl-1.1.1
小智 24
sudo apt-get install mssql-server=14.0.3192.2-2
Run Code Online (Sandbox Code Playgroud)
恢复此版本对我有用。
我的情况是在Ubuntu Server 18.04.2上全新安装(所有最新版本),从sqlcmd接收到客户端连接错误:
Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序17:TCP提供程序:错误代码0x2746
Ale*_*age 15
TCP 提供程序:错误代码 0x2746
这可能是 openssl 与 sql-server 协议/版本的问题。
检查您的 openssl 版本。在终端上运行以下命令openssl version:
$ openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017
Run Code Online (Sandbox Code Playgroud)
如果您的 openssl 版本不是 1.0,那么您可能希望通过以下选项之一解决连接问题:
sed -i -E 's/(CipherString\s*=\s*DEFAULT@SECLEVEL=)2/\11/' /etc/ssl/openssl.cnf
Run Code Online (Sandbox Code Playgroud)
是的,它是.cnf。
如果您的/etc/ssl/openssl.cnf文件中有 SECLEVEL,此命令会将您的 SECLEVEL 更改为 1 。完毕。
如果您的 openssl 版本是 1.1,您可能希望它是 1.0。这种方法是基本的:下载源代码,配置并制作二进制文件。构建所有内容可能需要几分钟时间:
cd /usr/local/src/
wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1k.tar.gz
tar -xvf /usr/local/src/openssl-1.0.1k.tar.gz
cd /usr/local/src/openssl-1.0.1k
./config --prefix=/usr/local/ --openssldir=/usr/local/openssl
make
make test
make install
mv /usr/bin/openssl /usr/bin/openssl-bak
Run Code Online (Sandbox Code Playgroud)
然后
cp -p /usr/local/openssl/bin/openssl /usr/bin/openssl
Run Code Online (Sandbox Code Playgroud)
或者
cp -p /usr/local/ssl/bin/openssl /usr/bin/openssl
ll -ld /usr/bin/openssl
openssl version
Run Code Online (Sandbox Code Playgroud)
如果您需要对某些特殊事物的见解,请发表评论:docker 图像或不同的系统等。
Hab*_*een 11
您可以回滚到以前版本的命令:sudo apt-get install mssql-server=14.0.3192.2-2或保留新版本通过以下MSSQL_Ubuntu的回答。
还禁用 mssql-server软件包上的更新:
sudo apt-mark hold mssql-server
Run Code Online (Sandbox Code Playgroud)
这不会阻止您在需要时手动进行更新。
小智 8
从Ubuntu 16.04升级到18.04仍会导致一些问题
少数系统可能需要1.0版的OpenSSL库才能连接到SQL Server。可以按以下步骤使用OpenSSL 1.0:
停止SQL Server sudo systemctl停止mssql-server 打开服务配置的编辑器 sudo systemctl edit mssql-server 在编辑器中,将以下行添加到文件中并保存: [Service] Environment =“ LD_LIBRARY_PATH = / opt / mssql / lib” 为SQL Server创建指向OpenSSL 1.0的符号链接,以使用 sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 /opt/mssql/lib/libssl.so sudo ln -s / usr / lib / x86_64-linux-gnu / libcrypto.so.1.0.0 /opt/mssql/lib/libcrypto.so 启动SQL Server sudo systemctl启动mssql-server 希望对您有所帮助
小智 5
同样的问题。这很糟糕,因为我现在在开发中,而那个“伟大的”更新只会消磨我的工作时间。
更新: MS SQL 版本回滚对我有帮助,但不幸的是我必须删除所有数据。感谢这是我的开发机器。下面的所有笔记都经过测试
ijin -> lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 19 Tara
Release: 19
Codename: tara
Run Code Online (Sandbox Code Playgroud)
1) 我已经卸载了 MS SQL 及其数据
sudo rm -rf /var/opt/mssql
sudo apt-get purge mssql-server mssql-tools
sudo apt-get autoremove
sudo apt-get autoclean
Run Code Online (Sandbox Code Playgroud)
2) 检查存储库中可用的 MS SQL 版本
ijin -> apt-cache policy mssql-server
Run Code Online (Sandbox Code Playgroud)
3) 安装自定义 MS SQL
sudo apt-get install mssql-server=15.0.1600.8-1 mssql-tools
Run Code Online (Sandbox Code Playgroud)
4) 设置
sudo /opt/mssql/bin/mssql-conf setup
Run Code Online (Sandbox Code Playgroud)
5) 内存限制,服务器代理
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 3072
Run Code Online (Sandbox Code Playgroud)
4)重启,状态
sudo service mssql-server restart
sudo service mssql-server status
Run Code Online (Sandbox Code Playgroud)
openssl包和更新的 MS SQL 的交互可能存在一些问题,我无法确定它是否属实,但在谷歌上搜索了一些关于它的注释。所以你可以使用
apt-cache policy openssl
sudo apt-get install openssl=<version>
openssl version
Run Code Online (Sandbox Code Playgroud)
更改 openssl 版本并尝试连接。