标签: freetds

Python - Linux - 使用Windows凭据连接到MS SQL - FreeTDS + UnixODBC + pyodbc或pymssql

设置它似乎没有任何好的指示.有没有人有任何好的指示?我是一个Linux菜鸟,所以要温柔.我确实看到了另一篇相似的帖子,但没有真正的答案.

我有几个问题.

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

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

    2. 我尝试过与pymssql类似的东西,但我遇到了类似的问题.我不断收到我无法连接的错误,但它没有告诉我原因.

python unixodbc pyodbc freetds pymssql

6
推荐指数
1
解决办法
4368
查看次数

FREETDS和UNIXODBC字符转换

我有一个错误需要解决.它的:

[FreeTDS][SQL Server]Error converting characters into server's character set. Some character(s) could not be converted
Run Code Online (Sandbox Code Playgroud)

当我使用土耳其字符插入我得到这个错误.我的问题是如何禁用转换的东西?我通过freetds和unixodbc连接到sql server.

谢谢..

linux sql-server debian unixodbc freetds

6
推荐指数
1
解决办法
6407
查看次数

使用PHP PDO-ODBC,unixODBC和FreeTDS的类型化绑定参数

我正在使用以下设置从PHP应用程序访问MS-SQL数据库

  • RedHat Enterprise Linux 5
  • 带有PDO和PDO_ODBC的PHP 5.2.14
  • unixODBC 2.2.11
  • FreeTDS 0.82.1.dev.20100810

非参数化查询工作正常.唯一的问题是被迫关闭单个结果语句(使用PDOStatment :: closeCursor)以避免"0 [FreeTDS] [SQL Server]无效游标状态(SQLSTATE = 24000)"错误.

但是我遇到了类型绑定参数的一个主要问题.使用这样的代码时:

$stmt = $PDO->prepare('INSERT INTO table (column1, column2)  VALUES (:foo, :bar');
$stmt->bindValue(':foo', 21, PDO::PARAM_INT);
$stmt->bindValue(':bar', 42, PDO::PARAM_INT);
$stmt->execute():
if (!$stmt->execute()) {
 var_dump($stmt->errorInfo();
}
Run Code Online (Sandbox Code Playgroud)

两列都是INT.我得到一个"206 [FreeTDS] [SQL Server]操作数类型冲突:文本与int [SQLSTATE = 22018]"错误不兼容.

在unixODBC日志中,我得到类似的东西

[ODBC][26251][SQLDescribeParam.c][175]
              Entry:
                      Statement = 0x2b73c849fb80
                      Parameter Number = 1
                      SQL Type = 0x7fff9c89e15e
                      Param Def = 0x7fff9c89e154
                      Scale = 0x7fff9c89e15c
                      Nullable = 0x7fff9c89e15a
[ODBC][26251][SQLDescribeParam.c][276]Error: IM001
[ODBC][26251][SQLBindParameter.c][193]
              Entry:
                      Statement = 0x2b73c849fb80 …
Run Code Online (Sandbox Code Playgroud)

php sql-server odbc unixodbc freetds

6
推荐指数
2
解决办法
4982
查看次数

Homebrew/TinyTDS/FreeTDS捆绑错误

我用homebrew(linux端口)来安装freeTDS,我正在尝试使用gem tinytds部署/捆绑安装我的应用程序.在进行bundle安装时我得到了这个错误输出

Installing tiny_tds (0.5.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/deployer/.rbenv/versions/1.9.2-p290/bin/ruby extconf.rb 

/usr/bin/ld: /opt/homebrew/lib/libsybdb.a(dblib.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC

/opt/homebrew/lib/libsybdb.a: could not read symbols: Bad value
Run Code Online (Sandbox Code Playgroud)

非常类似于此修复程序,但我没有在我的文件夹中引用的文件:https://stackoverflow.com/a/7119224/1130736

自制lib文件夹的内容:

/opt/homebrew/lib$ ls
libct.a  libsybdb.a
Run Code Online (Sandbox Code Playgroud)

完全错误转储:

full error dump:

Installing tiny_tds (0.5.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/deployer/.rbenv/versions/1.9.2-p290/bin/ruby extconf.rb 
checking for iconv_open() in iconv.h... yes
checking for …
Run Code Online (Sandbox Code Playgroud)

homebrew activerecord freetds tiny-tds

6
推荐指数
2
解决办法
3657
查看次数

在Heroku上安装freetds

我正在寻找一步一步的指南,如何在Heroku上安装freetds.我需要从ruby脚本访问Sql Server,不幸的是Cedar不支持tinytds gem.我已经阅读了互联网上可用的任何信息,包括关于heroku buildpacks但无法成功的信息.

我非常感谢能帮助在heroku上部署freetds的人.

提前谢谢, - 杰克

heroku freetds tiny-tds

6
推荐指数
1
解决办法
563
查看次数

错误20009(严重级9):无法连接:Adaptive Server不可用或不存在操作系统错误111,"连接被拒绝"

同时尝试通过命令连接到remort mssql server

tsql -S SQLEXPRESS  -U sa
Run Code Online (Sandbox Code Playgroud)

passwod:sa它会抛出错误,因为错误20009(严重级9):无法连接:Adaptive Server不可用或不存在操作系统错误111,"连接被拒绝"

我遵循的步骤/etc/freetds/freetdsconf.conf

[SQLEXPRESS]
host = 192.168.1.9
port = 1433
tds version = 8.0
client charset = UTF-8

/etc/odbcinst.ini
[FreeTDS]
Description     = TDS driver (Sybase/MS SQL)
Driver          =/usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup           =/usr/lib/i386-linux-gnu/odbc/libtdsS.so
CPTimeout       =
CPReuse         =
FileUsage       = 1


etc/odbc.ini
[SQLEXPRESS]
Driver      = FreeTDS
Description = ODBC connection via FreeTDS
Trace       = No
Servername  = 192.168.1.9
Database    = cakephp_results
Port        = 1433
UID         = sa
PWD         = sa
ReadOnly    = No
Run Code Online (Sandbox Code Playgroud)

sql-server ubuntu odbc freetds

6
推荐指数
1
解决办法
2万
查看次数

其中一个SELECT使用unixOdbc失败 - SQLSTATE [24000]:无效的游标状态

我运行的是Ubuntu 13.10,安装了FreeTDS和ODBC(包:php5-odbc).我使用tds version = 8.0,但也试过tds version = 7.2.

我正在使用PDO,这是我的DSN:

$dsn = sprintf('odbc:Driver=FreeTDS;Server=%s;Port=1433;Database=%s', DB_SQL_SERVERNAME, DB_DB_NAME);
Run Code Online (Sandbox Code Playgroud)

我连接到MSSQL实例并使用事务执行一些INSERT/SELECT查询,但我无法弄清楚为什么此查询失败:

SELECT id 
FROM tblColumns 
WHERE siteID = 10063 AND 
    typeID = 1000 AND 
    extendedTypeID = 18 AND 
    label = 'RwThiFc85A'
Run Code Online (Sandbox Code Playgroud)

给出错误:

SQLSTATE [24000]:无效的游标状态:0 [FreeTDS] [SQL Server]无效的游标状态(/build/buildd/php5-5.5.3+dfsg/ext/pdo_odbc/odbc_stmt.c:254中的SQLExecute [0])

我之前正在运行一系列类似的查询并且表现良好,例如:

SELECT id 
FROM tblColumns 
WHERE siteID = 10063 AND 
    typeID = 1000 AND 
    extendedTypeID = 3 AND 
    label = 'VwThiFc91B'
Run Code Online (Sandbox Code Playgroud)

你知道为什么会这样吗?

我没有dblib和sqlsrv这样的问题,但是现在我在Unix上并且不能使用sqlsrv,并且由于dblib UTF-8编码的问题,我试图使用ODBC.

php sql-server odbc unixodbc freetds

6
推荐指数
1
解决办法
1万
查看次数

使用PHP连接到MS SQL数据库:找不到数据源名称,并且未指定默认驱动程序

我已经坚持了一段时间这个问题,我只是无法进一步,我做了很多搜索但没有任何作用......我正在尝试使用odbc连接到带有php的Microsoft SQL数据库.

一切都已设置,如下所示(""之间的值在文件中是正确的):

/etc/odbc.ini:

[CRMCONNECT]
Description = "CRMConnect"
Driver = FreeTDS
Trace = No
Servername = CRMSERVER
Database = "dbname"
UserName = "username"
Password = "password"

[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Run Code Online (Sandbox Code Playgroud)

/etc/odbcinst.ini:

[FreeTDS]
Description = tdsodbc
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
CPTimeout       = 5
CPReuse         = 5
FileUsage       = 1
Run Code Online (Sandbox Code Playgroud)

/etc/freetds/freetds.conf:

[CRMSERVER]
host = xxx.xxx.xxx.xxx 
port = 1433
tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

我多次双重检查主机,这是正确的.我也尝试过tds版本7.0,但没有运气.

我可以使用isql成功连接到服务器:

root@crmart-web004:/# isql -v CRMCONNECT "user" "pass"
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| …
Run Code Online (Sandbox Code Playgroud)

php sql-server odbc freetds

6
推荐指数
1
解决办法
1万
查看次数

具有持久连接的PHP PDO dblib(mssql)无法正常工作

按照在线示例和PDO文档,我有一行用于使用持久连接创建PDO对象:

$p = new PDO('dblib:host=SOMEHOSTNAME;dbname=SOMEDB',$user,$password,[PDO::ATTR_PERSISTENT=>true]);
Run Code Online (Sandbox Code Playgroud)

官方文档示例如下:http://php.net/manual/en/pdo.connections.php

我们得到的错误:

SQLSTATE [IM001]:驱动程序不支持此功能:驱动程序不支持设置属性

php sql-server pdo freetds

6
推荐指数
1
解决办法
1215
查看次数

Docker PHP和FreeTDS - 无法在已知的安装目录中找到freetds

我正在尝试创建我的第一个图像,这是我从其他人那里分出的,我遇到了构建失败的问题.看起来错误就在这里

[91mconfigure: error: Cannot find FreeTDS in known installation directories
[0m
no
checking for PDO_DBLIB support via FreeTDS... yes, shared
Run Code Online (Sandbox Code Playgroud)

Docker文件

FROM php:5.6.30-apache

ENV DOWNLOAD_URL https://www.limesurvey.org/stable-release?download=2044:limesurvey2647%20170404targz
#php extensions
RUN docker-php-ext-install pdo pdo_mysql pdo_dblib pdo_pgsql \
    && apt-get update && apt-get install -y \
        freetds-bin \
        freetds-dev \
        freetds-common \
        libct4 \
        libsybdb5 \
        tdsodbc \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
        libldap2-dev \
        zlib1g-dev \
        libc-client-dev \
        libkrb5-dev \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd …
Run Code Online (Sandbox Code Playgroud)

php freetds docker

6
推荐指数
1
解决办法
3631
查看次数