sql-server - unixODBC 连接到 SQL 服务器超时

标签 sql-server odbc unixodbc

我在使用 unixODBC 时遇到问题。我需要到不同的 Sql 服务器实例的多个连接,除了一个之外,所有连接都在工作。它在主机中有附加参数。

所有主机都是 ip 或只是主机名,但不工作的主机有 IP\smth
我试过了:

Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0
Database=dbname
Server=192.168.1.1/PARAM
Port=1433

也试过转义,引号等。
isql -v返回:
[S1T00][unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired
[08001][unixODBC][Microsoft][ODBC Driver 13 for SQL Server]MAX_PROVS: Error Locating Server/Instance Specified [xFFFFFFFF]. 
[08001][unixODBC][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.
[ISQL]ERROR: Could not SQLConnect

最佳答案

我可以通过 unixODBC 从 MAC OSX (Sierra) 连接到 SQL Server 2017(安装在使用此镜像的 docker 容器中:https://hub.docker.com/r/microsoft/mssql-server-linux/)按照以下步骤操作:

  • 按照此处所述安装 ODBC 驱动程序:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server
  • 找出系统 DSN 存储在哪个 odbc.ini 配置文件中以及在哪里可以找到 ODBC 驱动程序名称:
    odbcinst -j ... DRIVERS............: /usr/local/etc/odbcinst.ini SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini ...
  • 记住 odbcinst.ini 文件中的确切驱动程序名称(从步骤 1 的驱动程序安装中预先配置):
    ... [ODBC Driver 13 for SQL Server] ...
  • 编辑 odbc.ini 文件并将 DSN 添加到您的数据库(此处描述了所有允许的关键字:https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns):
    ... [MSSQLTest]
    Driver = ODBC Driver 13 for SQL Server
    Server = 192.168.178.1,1433
    ...

    注意:在此处使用您的服务器 IP 地址(或服务器名称)和端口号。
  • 测试连接(现在应该可以工作了):
    isql MSSQLTest sa Password12345 -v
    注意:用您自己的凭据替换用户名“sa”和密码“Password12345”!

    你应该会看到:

    Connected!

  • 享用含咖啡因的热饮;-)
  • 关于sql-server - unixODBC 连接到 SQL 服务器超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35994045/

    相关文章:

    r - 如何使用 DBI 写入包含日期列的表

    mysql - Sharepoint Designer 2007 ODBC 数据库无法连接到 MySQL?

    ruby-on-rails-3 - 将 Redhat 连接到 SQL Server 2008 for Ruby on Rails

    php - 我使用循环填充 <select> 选项,如何使选择框显示当前选项而不是最高值?

    php - PDO异常 : SQLSTATE 01002 Adaptive Server connection failed (severity 9)

    php - 是什么决定了 PDO::ATTR_TIMEOUT 如何与 ODBC 连接一起工作?

    Java JDBC 无法连接到 MSSQL Server

    asp.net - "Invalid attempt to read when no data is present"

    .net - 将 XML 插入 SQL Server 时出现 XML 解析错误

    sql - 读取下一条记录 "NOT"上一条记录sql