【问题标题】:Python - Linux - Connecting to MS SQL with Windows Credentials - FreeTDS+UnixODBC + pyodbc or pymssqlPython - Linux - 使用 Windows 凭据连接到 MS SQL - FreeTDS+UnixODBC + pyodbc 或 pymssql
【发布时间】:2011-02-23 09:24:01
【问题描述】:

似乎没有任何很好的设置说明。有没有人有什么好的指示?我是一个 linux 菜鸟,所以要温柔。我确实看到了类似的another post,但没有真正的答案。

我有几个问题。

  1. FreeTDS“似乎”不起作用。我正在尝试连接并使用“tsql”命令收到以下消息:“默认数据库被设置为 databaseName 连接到服务器时出现问题”,但没有提及问题所在。

    1. 我尝试使用 pyodbc 连接时遇到的错误是:“pyodbc.Error: ('08S01', '[08S01] [unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is不可用或不存在 (20009) (SQLDriverConnectW)')"

    2. 我尝试使用 pymssql 进行类似操作,但遇到了类似问题。我不断收到无法连接的错误,但它没有告诉我原因。

【问题讨论】:

  • 没有任何明确的解决方案似乎很神奇。
  • 我猜这是因为没有人能够重现您的问题。您可能需要对您的系统进行进一步分析,例如设置一个空的“虚拟”MSSQL 数据库并检查问题是否仍然存在。然后,提供有关您的测试设置的确切组成部分的摘要。这样一来,其他人就可以在您的设置中发现问题,或者在他们自己的机器上尝试类似的设置。

标签: python pyodbc freetds unixodbc pymssql


【解决方案1】:

如果您将 MS SQL 服务器配置为允许远程 TCP/IP 连接并有适当的用户进行连接,则以下操作有效。

您还需要小心为数据库设置正确的主机名,如 MS SQL 报告的那样。

import pymssql
connection = pymssql.connect(
            user = 'username', 
            password = 'password', 
            host = 'server', 
            database = 'database',
        )
cursor = connection.cursor()
cursor.execute('select * from db;')
rows = cursor.fetchall()

【讨论】:

    【解决方案2】:

    在构建 FreeTDS (http://www.freetds.org/userguide/config.htm) 时:

    ./configure --with-tdsver=8.0 --enable-msdblib
    

    【讨论】:

      【解决方案3】:

      该错误表明 TDS 版本设置不正确。您可以在 FreeTDS 的配置设置中进行设置。您没有提及您使用的是哪个 MSSQL 版本。但是,如果您使用的是 2005,则将 8.0 设置为 TDS 版本将起作用。

      【讨论】:

        猜你喜欢
        • 2016-10-22
        • 1970-01-01
        • 2010-10-07
        • 2016-10-21
        • 2011-03-16
        • 2013-05-31
        • 2014-11-06
        • 2018-04-23
        • 1970-01-01
        相关资源
        最近更新 更多