我使用的平台和软件版本如下:
Red Hat Enterprise Linux Server release 7.4 (Maipo)
Microsoft SQL Server 2017 (RTM-CU3-GDR) (KB4052987) - 14.0.3015.40 (X64)
Dec 22 2017 16:13:22
Copyright (C) 2017 Microsoft Corporation Express Edition (64-bit) on
Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600:) (Hypervisor)
我在 Google 上搜索了很多答案,但还没有找到任何解决方案。我无法RDS instance having MS SQL instance
通过 Linux 连接。
如果我尝试,它会显示以下错误:
[ec2-user@ip-~]$ sqlcmd -H mssqldb.xxxxxxxxxxxxxx.com -P 1433
-U userXXXXX -P aXXXXXX
-Q 'SELECT TOP 1 [n] FROM [dbbase2].[dbo].[table_people]'
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server :
Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server :
TCP Provider: Error code 0x2749.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server :
A network-related or instance-specific error has occurred while
establishing a connection to SQL Server. The 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.
[ec2-user@ip- ~]$ Check if instance name is correct and if SQL Server is
configured to allow remote connections.
有人能告诉我这个问题及其解决办法吗?
谢谢。
答案1
我遇到了同样的错误。这是因为我使用-H mssqlserver
了-S mysqlserver
这对我有用
sqlcmd -U sa -S mssqlserver -P secret
在问题中,该-P
选项用于港口和密码,但仅支持密码。
如果要使用不同于的端口1433
,则将其与主机名一起传递
sqlcmd -U sa -S mssqlserver,1444 -P secret
sqlcmd
安装说明可以在以下位置找到
https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15
如果有人关心 Emacs Org-babel
#+HEADER: :results table :engine mssql :dbhost mssqlserver :database master :dbuser sa :dbpassword secret
#+begin_src sql
SELECT name, database_id, create_date
FROM sys.databases;
#+end_src
在发现
答案2
查看
telnet mssqldb.xxxxxxxxxxxxxx.com 1433
应该打开与端口的连接。
确保默认实例存在(不是命名实例),否则在命令中提供实例名称。
答案3
对我来说,它使用了不同的端口 1434。
我必须使用逗号将其附加到连接字符串中的服务器名称:
sqlcmd -S SERVERNAME,1434 -U sa -P 'MySecret'