首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >freetds和pyodbc连接失败

freetds和pyodbc连接失败
EN

Stack Overflow用户
提问于 2014-11-04 20:45:36
回答 2查看 4.3K关注 0票数 6

目前,我正致力于建立从Linux盒到Microsoft服务器的连接。我已经在Linux上安装了FreeTDS和pyodbc。

我设置了以下文件: /etc/freetds/freetds.conf

代码语言:javascript
复制
[sqlserver]
    host = <ip address>
    port = 1433
    tds version = 8.0
    client charset = UTF-8

~/.odbc.ini

代码语言:javascript
复制
[sqlserver]
Description     = FreeTDS MSSQL
Driver          = FreeTDS
Servername      = <same ip as above> 
Database        = Reports
TDS_Version     = 8.0

/etc/odbcinst.ini

代码语言:javascript
复制
[FreeTDS]
Description             = FreeTDS MSSQL
Driver                  = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Driver64                = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup                   = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Setup64                 = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
UsageCount              = 1
CPTimeout               = 
CPTimeToLive            = 
DisableGetFunctions     = 
DontDLCLose             = 
ExFetchMapping          = 
Threading               = 
FakeUnicode             = 
IconvEncoding           = 
Trace                   = 
TraceFile               = 
TraceLibrary            = 

当我试图运行tsql -S sqlserver -U用户名-P密码时,会得到以下错误:

代码语言:javascript
复制
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Msg 18452 (severity 14, state 1) from SYMPLECTIC03 Line 1:
    "Login failed. The login is from an untrusted domain and cannot be used with Windows authentication."
Error 20002 (severity 9):
    Adaptive Server connection failed
There was a problem connecting to the server

我还尝试用以下脚本连接pyodbc:

代码语言:javascript
复制
import pyodbc
try:
    cnxn = pyodbc.connect('DRIVER=FreeTDS;SERVER=same_ip_as_above;DATABASE=Reports;UID=myusername;PWD=mypassword')
except pyodbc.Error, err:
    print err

它打印以下错误:

代码语言:javascript
复制
('001', '[001] [nxDC[reD]SLSre]nbet onc odt ore (0) (SQLDriverConnect)')

并不是最有用的错误信息。

当我试图连接时,我做错了什么吗?

顺便提一下,我们的数据库需要Windows身份验证,而不是集成的。我可以打电话到主机,所以这也不是问题所在。

EN

回答 2

Stack Overflow用户

发布于 2015-09-28 13:54:26

装置看起来很好。我也有过类似的工作,在服务器升级到NTLMv2之后,它就坏了。这给了一个"...untrusted .“测试tsql时出错。细节在这里

我只需要在我的use ntlmv2 = yes规范中包括freetds.conf

票数 5
EN

Stack Overflow用户

发布于 2014-11-04 22:13:37

使用Windows身份验证可能很棘手..。而且很丑。最佳做法:

  • 在Server中创建经过SQL身份验证的用户,以便尽可能使用有限的权限进行连接。
  • 请注意,TDS版本8.0可以工作,但是为了正确起见,您应该使用TDS版本7.2:https://www.freetds.org/userguide/ChoosingTdsProtocol.html
  • TDS版本在2012年和2014年发生了变化,但向后兼容。我对pyodbc的2012年和2014年的Django没有任何问题。
  • 您还需要更改这一行以包括TDS版本: cnxn = pyodbc.connect('DRIVER=FreeTDS;SERVER=same_ip_as_above;DATABASE=Reports;UID=myusername;PWD=mypassword;TDS_Version=7.2;')

祝您好运;我相信如果您修复了这个问题,堆栈的其余部分应该会正常运行。

致以敬意,

-Tim

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26744692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档