当前位置: 首页 > 面试题库 >

freeTDS不使用其配置

柴宏阔
2023-03-14
问题内容

我决定使用FreeTDS驱动程序和unixODBC来管理基于LAMP的应用程序与远程MsSQL数据库之间的PDO连接。不幸的是,驱动程序似乎没有读取freetds.conf文件,也没有直接通过服务器的CLI设置或由putenv()函数在php文件中指定的环境变量。

现在一些数据:

  1. 当我ping服务器时-没有任何数据包丢失。
  2. 当我在1433端口上远程登录服务器时-建立连接
  3. 当我使用命令
        TDSVER=7.0 tsql -H >IP< -p 1433 -U username

系统提示我输入密码并建立连接。

  1. 在命令前没有TDSVER的情况-连接失败,并显示以下消息:
        Error 20017 (severity 9):
        Unexpected EOF from the server
        OS error 115, "Operation now in progress"
    Error 20002 (severity 9):
        Adaptive Server connection failed
    There was a problem connecting to the server
  1. tsql -C命令回显这样的输出:
        Compile-time settings (established with the "configure" script)
                           Version: freetds v0.91
            freetds.conf directory: /usr/local/etc
    MS db-lib source compatibility: yes
       Sybase binary compatibility: no
                     Thread safety: yes
                     iconv library: yes
                       TDS version: 5.0
                             iODBC: no
                          unixodbc: yes
             SSPI "trusted" logins: no
                          Kerberos: no
  1. 上面给定位置的freetds.conf中包含以下条目:
        [MSSQL]
    host = >IP<
    port = 1433
    tds version = 7.0
  1. ISQL也失败:
        isql -v MSSQL
    [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
    [01000][unixODBC][FreeTDS][SQL Server]Adaptive Server connection failed
    [ISQL]ERROR: Could not SQLConnect
  1. 我的odbc.ini:
        [MSSQL]
    Description = MS SQL Server
    Driver = FreeTDS
    TDS_Version = 7.0
    Server = >IP<
    UID = username
    PWD = password
    ReadOnly = No
    Port = 1433

我想解决方案真的很简单,但是我太愚蠢了,找不到它…


问题答案:

我今天花了很长时间调试类似的问题。我在freetds.conf中设置了“
TDS版本”,但是在我的ODBC连接中没有使用它。阅读freetds源代码(connectparams.c:odbc_parse_connect_string)之后,我发现:

  • 如果您的连接字符串使用“ SERVER =“,那么freetds.conf和odbc.ini都将被忽略
  • 如果您的连接字符串使用“ SERVERNAME =”,那么将使用相应的freetds.conf服务器中的设置
  • 如果您的连接字符串使用“ DSN =“,则使用适当的odbc.ini DSN中的设置

odbcinst.ini是一个红色鲱鱼。FreeTDS从不检查设置。

始终会遵守 在连接字符串 中指定的设置。它还始终尊重TDSVER之类的环境变量。



 类似资料:
  • FreeTDS 是Linux/Unix 下一组软件开发包,用于实现微软 SQL Server 和 Sybase 的 Tabular DataStream protocol 协议。利用 FreeTDS 可在 Linux/Unix 下连接 SQL Server 和 Sybase 数据库。

  • Create our application reducer app/index.ts app/reducers/index.ts Next we want Ng2-Redux to configure our store based on settings we provide. This should be done once, in the top-level component of yo

  • 问题内容: 以下作品: 以下失败: 上面的错误消息是: DBAPIError:(错误)(“ 08001”,“ [08001] [unixODBC] [FreeTDS] [SQL Server]无法连接到数据源(0)(SQLDriverConnectW)”)无无 有人能指出我正确的方向吗?有没有一种方法可以简单地告诉sqlalchemy将特定的连接字符串传递给pyodbc? 请注意: 我想保留此DS

  • ssh 公私钥登录配置 第一步,在客户端生成公钥 ssh-keygen -t rsa #生成的公钥匙在 ~/.ssh/ 目录下 第二步,把公钥上传到服务器端,登录服务器追加公钥到 authorized_keys 文件 简单版 ssh-copy-id -i ~/.ssh/id_rsa.pub username@ip 复杂版 scp id_rsa.pub root@ip地址:文件保存路径 ssh

  • 您还可以使用其他的构建脚本来配置当前的项目,Gradle 构建语言的所有的内容对于其他的脚本都是可以使用的. 您甚至可以在别的脚本中再使用其他的脚本. 例子 14.3.使用其他的构建脚本配置项目 build.gradle apply from: 'other.gradle' other.gradle println "configuring $project" task hello << {

  • 我目前想实现这样的东西: 但是在中,我们将重点关注authProvider()方法和configure() 随着最近的消息,已被弃用。经过研究,我发现了一件事: 所以我也不得不这么做 这解决了另一个问题。但现在,我发现了这个错误。 这也是我的用户服务 你们介意帮我解决这个问题!谢谢:) 我还想提一下,我还没有在网上找到答案