首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自适应服务器不可用或不存在

自适应服务器不可用或不存在
EN

Stack Overflow用户
提问于 2022-05-16 06:17:58
回答 1查看 474关注 0票数 1

我正试图通过mssql连接到FreeTDS服务器。

首先,我通过ODBC Driver 17 for SQL Server尝试了一下,结果成功了。这是我在settings.py中的配置。

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'mssql_database': {
        'ENGINE': 'django_pyodbc',
        'NAME': 'blabla', 
        'USER': 'blabla', 
        'PASSWORD': 'blabla', 
        'HOST': '10.65.1.20', 
        'PORT': '',  
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server', 
        },
    },
   
}

根据指南,我在Ubuntu 18.04上安装了FreeTDS

这是我的/etc/odbcinst.ini

代码语言:javascript
复制
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1
UsageCount=1


[FreeTDS]
    Description = TDS driver (Sybase/MS SQL)
    Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
    CPTimeout =
    CPReuse =

这是新的settings.py部分

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'mssql_database': {
        'ENGINE': 'django_pyodbc',
        'NAME': 'blabla', 
        'USER': 'blabla',  
        'PASSWORD': 'blabla', 
        'HOST': '10.65.1.20', 
        'PORT': '', 
        'OPTIONS': {
            'driver': 'FreeTDS', 
            'host_is_server': True,
            'extra_params': "TDS_VERSION=8.0"
        },
    },
}

我有一条错误消息pyodbc.OperationalError: ('08S01', '[08S01] [FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist (20009) (SQLDriverConnect)')

我怎样才能纠正错误?该连接与ODBC Driver 17 for SQL Server一起工作。那么,为什么它不适用于FreeTDS驱动程序呢?可能是因为文件/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so不在吗?我找不到libtdsS.so

代码语言:javascript
复制
$ pip list
Package       Version
------------- -------
Django        1.8
django-pyodbc 1.1.3
pip           21.3.1
pyodbc        4.0.32
setuptools    59.6.0
sqlany-django 1.13
sqlanydb      1.0.11
wheel         0.37.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 11:37:52

正如您注意到的,将PORT设置为1433 --但这只是您需要做的工作的一部分。

TDS_Version=8.0无效,将在大于1.3:https://www.freetds.org/userguide/ChoosingTdsProtocol.html的较新版本的FreeTDS上中断

由于Ubuntu18附带了FreeTDS版本1.00.82,假设您使用的是Server 2012或更高版本,那么您应该使用TDS协议的7.4版本。

将您的选项更改如下:

代码语言:javascript
复制
'OPTIONS': {
    'driver': 'FreeTDS', 
    'host_is_server': True,
    'extra_params': "TDS_Version=7.4"
},

您可能需要重新运行迁移(如果有的话),因为较新的TDS版本支持更多的Server字段,如DATEDATETIME2,但看起来您可能只是在使用Server进行读取。祝好运!

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

https://stackoverflow.com/questions/72254826

复制
相关文章

相似问题

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