标签: unixodbc

适用于Linux和FreeTDS的Microsoft ODBC驱动程序?

我正在研究从RHEL6应用程序服务器连接到MSSQL数据库的可能性。我发现了两种方法:

有没有人有使用这两种设置的经验?(我对后者特别好奇,因为它得到了MS的官方支持)。性能?稳定性?我可能会缺少其他选择吗?

linux sql-server unixodbc freetds

5
推荐指数
1
解决办法
3673
查看次数

RODBC无法分配内存

简单的R脚本

library(RODBC)
odbChannel <- odbcConnect(dsn = "CTPRD03", uid = "BD_RPT_RO", pwd = "****")
df.test <- sqlQuery(channel = odbChannel, query = "select * from DUAL;")
df.test
close(odbChannel)
Run Code Online (Sandbox Code Playgroud)

产生以下错误

闪亮的@ narc07shiny1dev:〜/ software> Rscript ./RODBC_SIMPLE_TEST.r odbcQuery中的
错误(通道,查询,rows_at_time):
'
Calloc '无法分配内存(18446744073709551616 of 22816 bytes)
调用:sqlQuery - > odbcQuery - > .Call
执行停止
警告消息:
关闭未使用的RODBC句柄1

在R之外测试了odbc并且能够得到结果.我不确定问题出在哪里.我在想它是RODBC.

已经卸载了RODBC并重新安装了RODBC软件包,在此过程中没有出现任何错误,但仍然有相同的结果.

找到一个有同样问题的案例,但没有任何解决方案.什么是隔离问题的后续步骤,任何建议?

r unixodbc rodbc

5
推荐指数
2
解决办法
3407
查看次数

使用SQLAlchemy连接到SQL Server

我正在尝试使用SQLALchemy和pyodbc连接到SQL Server Express数据库,但我不断收到错误:

(pyodbc.Error)('IM002','[IM002] [unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect)')

我真的不明白我的引擎网址是错还是其他什么.我的方案如下:

  • 我在Mac上
  • 我有一个docker容器(基于带有和的Debian图像),我的python应用程序尝试连接到...unixodbcunixodbc-dev
  • 一个VirtualBox的虚拟机上运行的Windows 8与SQL Express的2014 ...

我使用SQL Server身份验证为SQL Express配置了一个用户:

  • user:ar_user
  • 密码:ar_psw

...然后:

  • 我将TCP端口配置为1433并禁用动态端口(SQL Server配置管理器>网络配置>协议).
  • 我关闭了Windows防火墙.
  • 我为运行windows8的VM使用了仅限主机的适配器

现在...

可以从主机(我的mac)访问VM,因为:

ping -c 3 vm-ip
Run Code Online (Sandbox Code Playgroud)

成功!

但是,虽然我尝试了用户,密码,IP,服务器名称和端口的所有可能的排列:

  • 'mssql+pyodbc://ar_user:ar_psw@vm-ip/master'
  • 'mssql+pyodbc://ar_user:ar_psw@vm-ip:1433/master'
  • 'mssql+pyodbc://IE10WIN8\\SQLEXPRESS'
  • 'mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS'
  • 'mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS:1433'
  • 'mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS:1433/master'

...还有很多!

我总是得到"数据源未找到错误".我该怎么办?

ps:即使在docker容器中,vm也可以ping通!

更新(已解决但不是100%):

我这样解决了:

我用/etc/odbcinst.ini这种方式配置了FreeTDS驱动程序:

[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
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)

并在/etc/freetds/freetds.conf:

[global]
tds version = …
Run Code Online (Sandbox Code Playgroud)

sql-server odbc sqlalchemy unixodbc pyodbc

5
推荐指数
1
解决办法
4532
查看次数

如何从Ubuntu连接到Windows SQL Server

在过去的两天里,我一直在尝试连接到远程Windows SQL服务器,但没有取得明显的成功.我正在尝试使用pyodbc包连接python .

我已经尝试过关注那些没有太多运气的所有博客文章.我第一次跟随那个我认为努力但最终过于语无伦次的IMO.

unixODBC按照博文中的建议安装了经理.我已从Windows下载了可用的redhat软件包并运行安装脚本,但每次我尝试连接到db时都会得到

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server Native Client 10.0' : file not found (0) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)

有没有办法在几个小时内实现这一点,而无需自己调整窗口的安装脚本?有人可以概述需要采取的步骤和需要安装的模块,以便某人能够从Linux机器连接到Windows SQL Server吗?

我目前正在使用Ubuntu 15.04.

更新

我也试过这里给出的指示.查看azure平台中SQL db的详细信息,明确指出驱动程序应该是SQL Server Native Client 10.0.我应该考虑强制使用该驱动程序,还是可以使用第二篇博客文章中建议的FreeTDS?

python ubuntu unixodbc azure pyodbc

5
推荐指数
1
解决办法
1570
查看次数

无法从Linux连接到SQl Server

我正在尝试连接到CentOS 5.8上的SQL Server 2008.我正在使用unixODBC 2.3.0和SQL Server ODBC驱动程序(www.microsoft.com/en-us/download/details.aspx?id=28160).

当我尝试通过运行来测试连接时:

isql -v mydsn username password
Run Code Online (Sandbox Code Playgroud)

它给了我:

[S1T00][unixODBC][Microsoft][SQL Server Native Client 11.0]Login timeout expired
[08001][unixODBC][Microsoft][SQL Server Native Client 11.0]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.
[08001][unixODBC][Microsoft][SQL Server Native Client 11.0]TCP Provider: Error code 0x2726
[ISQL]ERROR: …
Run Code Online (Sandbox Code Playgroud)

sqlncli unixodbc sql-server-2008 strace isql

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

如何使用PHP在RedHat Linux上为SQLServer®配置Microsoft®ODBC驱动程序11

这是关于如何使用PHP在RedHat Linux上安装用于SQLServer®的Microsoft®ODBCDriver 11

php unixodbc sql-server-2008

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

在Linux Redhat/CentOS上为msodbcsql17安装unixODBC> = 2.3.1

我尝试使用CentOS/RedHat(Linux)在AWS EC2上安装msodbcsql17.

这些是我所遵循的步骤,来自Microsoft(LINK):

sudo su

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#RedHat Enterprise Server 6
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

#RedHat Enterprise Server 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: …
Run Code Online (Sandbox Code Playgroud)

redhat centos unixodbc amazon-ec2 pyodbc

4
推荐指数
1
解决办法
3372
查看次数

使用备用unixODBC安装

我正在一个在组织范围内集中安装的驱动器上安装了unixODBC的环境中工作,但是我们(实际的开发人员)不允许在其中安装驱动程序或数据源.这都是倒退,但我必须忍受它.

现在,我试图建立从这个UNIX ENVIRO连接到MSSQL 2005服务器Python应用程序,所以我显然需要一些SQL司机!

我绕过我无法进入预装了unixODBC通过重新安装了unixODBC上,我有完全控制驱动器的一部分.我已经安装了freeTDS并配置了所有内容,以便我可以使用isql成功连接到服务器 - 太棒了!

现在唯一的问题是,当我在我的python程序(使用pyodbc)中执行一行时,如:

import pyodbc
pyodbc.connect("DSN=<dsn_name>;UID=...;PWD=...", autocommit=True)
Run Code Online (Sandbox Code Playgroud)

我明白了

 ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnectW)')
Run Code Online (Sandbox Code Playgroud)

我认为这是因为pyodbc仍在寻找原始的unixODBC安装,而不是我的本地安装.所以我想知道:

如何配置我的脚本以查找本地unixODBC安装而不是主驱动器上安装的安装

python sql-server unixodbc pyodbc freetds

3
推荐指数
1
解决办法
2385
查看次数

连接到IBM AS/400 DB2数据库

我正在尝试使用PHP的ODBC驱动程序从Ubuntu服务器连接到客户端的IBM AS/400 DB2数据库.我也安装了unixODBC.我的odbcinst.ini看起来像这样:

[IBM DB2 ODBC DRIVER]
Description = ODBC 5.1 Driver for Database
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
FileUsage = 1
Run Code Online (Sandbox Code Playgroud)

我的odbc.ini看起来像这样:

[IBM DB2 ODBC DRIVER]
Driver = IBM DB2 ODBC DRIVER
Description = ODBC 5.1 Driver DSN
Run Code Online (Sandbox Code Playgroud)

现在,我的连接代码是:

$server = '12.345.678.90' //IP
$port = '446' //PORT
$username = 'my_username';
$password = 'my_password';

$connect = odbc_connect("DRIVER = {IBM DB2 ODBC DRIVER};System=$server:$port;Uid=$username;Pwd=$password;", $username, $password);

if(!$connect)
    echo 'Cannot Connect!';
else
    echo 'Connected!';
Run Code Online (Sandbox Code Playgroud)

我得到的错误是这样的:

Warning: odbc_connect(): …
Run Code Online (Sandbox Code Playgroud)

db2 ubuntu unixodbc ibm-midrange

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

如何在Amazon Linux AMI上为SQL Server安装PHP的Microsoft驱动程序

我正在尝试使用Microsoft提供的文档为SQL Server安装PHP的Microsoft驱动程序。链接是https://github.com/Microsoft/msphpsql

它提供了Ubuntu和Redhat的安装步骤,但没有提供Amazon Linux的安装步骤。要在Amazon上安装Microsoft驱动程序,我遵循为Redhat提供的步骤(不确定它是否正确)。当我运行命令

sudo ACCEPT_EULA=Y yum install msodbcsql mssql-tools
Run Code Online (Sandbox Code Playgroud)

出现以下错误

Error: Package: msodbcsql-13.1.7.0-1.x86_64 (packages-microsoft-com-prod)
           Requires: unixODBC >= 2.3.1
           Available: unixODBC-2.2.14-14.7.amzn1.i686 (amzn-main)
               unixODBC = 2.2.14-14.7.amzn1
Run Code Online (Sandbox Code Playgroud)

该错误清楚地表明,要安装msodbcsql,unixODBC版本应为> = 2.3.1。但是可用于亚马逊的更新/最新的unixODBC软件包是unixODBC-2.2.14。

我需要一些帮助,以便在Amazon Linux上安装适用于PHP的Microsoft驱动程序,以便可以使用Sqlsrv PHP函数连接SQL Server。

PHP7,Apache和SQL Server已设置。

php linux unixodbc amazon-web-services mssql-tools

3
推荐指数
1
解决办法
1506
查看次数