`
weiwu83
  • 浏览: 191326 次
  • 来自: ...
社区版块
存档分类
最新评论

在Linux下使用unixODBC连接SQLServer2000

    博客分类:
  • unix
阅读更多

在Linux下使用perl通过unixODBC连接SQLServer2000

作者:tonyvicky
来自:LinuxSir.Org
摘要:MS从来没有提供过SQLServer for Linux,所以大家也不要去尝试在Linux系统安装SQLServer,但是可以通过ODBC连接Windows系统的SQLServer数据库;

目录

一、关于测试环境及Linux连接SQL Server 的说明;
二、下载相关软件 unixODBC、freetds和DBD-ODBC
三、安装和配置;

四、关于本文
五、相关文档

 

++++++++++++++++++++++++++++++++++++++++++++
正文
++++++++++++++++++++++++++++++++++++++++++++

 


一、关于测试环境及Linux连接SQL Server 的说明;

测试环境:
gcc 3.3.3 , kernel 2.6.5-1 , glibc 2.3.3-27 , perl 5.8.3
关于SQL Server说明:

MS从来没有提供过SQLServer for Linux,所以大家也不要去尝试在Linux系统安装SQLServer,但是可以通过ODBC连接Windows系统的SQLServer数据库;

Windows Server 2003用户注意:

在Windows Server 2003系统上安装的SQLServer是不会打开1433端口的,所以请Windows2003用户在安装完SQLServer之后一定装上SQLServer SP3布丁


二、下载相关软件 unixODBC、freetds和DBD-ODBC

首先需要下载3个文件:

Linux系统的ODBC

unixODBC-2.2.8.tar.gz ( http://www.unixodbc.org)

连接SQLServer或Sybase的驱动

freetds-0.62.4.tar.gz ( http://www.freetds.org)

perl的ODBC模块

DBD-ODBC-1.12.tar.gz ( http://cpan.perl.org)

把下载到的三个文件放到同一个目录


三、安装和配置;


1、安装unixODBC

 

# tar vxzf unixODBC-2.2.8.tar.gz
# cd unixODBC-2.2.8
# ./configure --prefix=/usr/local/unixODBC
# make
# make install


2、安装freetds

 

 

# tar vxzf freetds-0.62.4.tar.gz
# cd freetds-0.62.4
# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0
# make
# make install

 


3、安装DBD-ODBC

在安装之前要先设置一下环境变量

# export ODBCHOME=/usr/local/unixODBC

之后开始编译安装
# tar vxzf DBD-ODBC-1.12.tar.gz
# cd DBD-ODBC-1.12
# perl Makefile.PL
# make
# make install

 

所有的软件到现在都安装完成了,接下来就是配置了

4、配置freetds

 

# cd /usr/local/freetds
# vi etc/freetds.conf

修改以下的一段,并把;去掉
改好之后的内容:
[MyServer2k]
host=192.168.0.32
port=1433
tds version=8.0

 

其中的[MyServer2k]代表在客户端使用的服务器名称,host代表SQLServer服务器的IP地址,port代表端口,测试连接;

 

# bin/tsql -S MyServer2k -H 192.168.0.32 -p 1433 -U sa -P password
1> use gameDB
2> go
1> select count(*) from t_ip
4
1> quit

一切都很顺利
现在来说明以下这些参数的作用,-S MyServer2k是在freetds.conf中定义好的,-H 192.168.0.32服务器IP地址,和freetds.conf中的一致,如果使用了-S参数,这个参数可以不用,-p 1433用来指定端口是1433 ,-U sa用来指定连接数据库的用户名,-P password用来指定连接数据库的密码。

 


5、配置unixODBC

 

# cd /usr/local/unixODBC

向ODBC添加SQLServer驱动
# vi etc/odbcinst.ini

写入如下内容:
[TDS] ;驱动名称
Description = MS-SQLServer ;描述
Driver = /usr/local/freetds/lib/libtdsodbc.so ;驱动程序
Setup = /usr/local/freetds/lib/libtds.so ;不要问我,我也不知道这是什么
FileUsage = 1

保存退出
添加DSN
# vi etc/odbc.ini

写入如下内容
[123] ;DSN名称
Driver = TDS ;ODBC驱动
Server = 192.168.0.32 ;服务器IP
Database = gameDB ;要使用的数据库
Port = 1433 ;端口
Socket =
Option =
Stmt =

保存并退出,测试ODBC的连接
# bin/isql -v 123 sa password
SQL> select count(*) from t_ip
+----------+
| |
+----------+
| 4 |
+----------+
SQL> quit

 

OK,测试通过,开始测试perl能否正确使用ODBC
在使用perl连接ODBC之前要做些准备工作
把ODBC的共享库都复制到/usr/lib目录

# cp /usr/local/unixODBC/lib/libodbc.* /usr/lib

 


6、perl脚本测试能否成功;

 

# vi test.pl

内容如下
#!/usr/bin/perl
use DBI;
$dbh=DBI->connect('dbi:ODBC:123','sa','password');
my $sth=$dbh->prepare("select * from t_ip";
$sth->execute();
while (@data=$sth->fetchrow_array()){
print "$data[0] $data[1] $data[2]\n";
}

保存退出
# perl test.pl

如果可以看到数据库中的记录,就说明可以正常使用ODBC perl了。
既然已经可以实现perl通过ODBC来连接SQLServer了,那么同样可以使用PHP+ODBC+SQLServer,具体方法请查询PHP官方网站。

 


四、关于本文

写完,收工,今天晚上可以不用熬夜了,开心
PS:M$真是害死我了。


五、相关文档

《sqlrelay 的安装配置和应用》

安裝了freeTDS之後還是無法連上MSSQL

大哥:
我安裝了freeTDS之後,在/usr/local/freetds/freetds.conf
設定如下:
host = 192.168.0.22
port = 1433
tds version = 7.0
完成後,我測試連結 tsql -S MSSQL2k -U sa
要求我輸入password
結果出現了
there was a problem connecting to the server
以上訊息,請問是不是我那裡設定錯誤
沒有安裝unixODBC和DBD-ODBC
安裝了freeTDS之後還需要安裝unixODBC和DBD-ODBC才能連結到MSSQL嗎
請大哥指導

不能支持中文

我在suse linux下安装freetds和unixODBC的最新版本后,用freetds带的tsql可以从sql server数据表中正常取出中文字符,但是用unixODBC的isql却取出的都是以问号代替的中文字符。
这是我在freetds.conf中的设置
[MyServer2k]
host = 10.168.168.72
port = 1433
tds version = 8.0
client charset = UTF-8

問題請教

大哥:
我安裝了freeTDS之後,在/usr/local/freetds/freetds.conf
設定如下:
host = 192.168.0.22
port = 1433
tds version = 7.0
完成後,我測試連結 tsql -S MSSQL2k -U sa
要求我輸入password
結果出現了
there was a problem connecting to the server
以上訊息,請問是不是我那裡設定錯誤
沒有安裝unixODBC和DBD-ODBC
安裝了freeTDS之後還需要安裝unixODBC和DBD-ODBC才能連結到MSSQL嗎

還是LINUX系統必需要設定什麼

請大哥指導

我也遇到isql不能支持中文的问题

我也遇到isql不能支持中文的问题,把LANG设成zh_CN.GB18030了,但是没有用,还是全部问号啊,安装方法到底对还是不对

freeTDS 支持中文,只不过 unixODBC 的 iSQL 跟 freeTDS

>> 用freetds带的tsql可以从sql server数据表中正常取出中文字符,但是用unixODBC的isql却取出的都是以问号代替的中文字符

我的 linux 是 Fedora Core 5,环境变量 LANG=zh_CN.UTF-8,FreeTDS是下载的 0.62 的 rpm 安装包安装的;unixODBC 是 FC5 自带的;SQLServer2000(简体中文版)是安装在另外一台简体中文Windows2000服务器的。安装、配置完后用 FreeTDS 的 tsql 访问数据库正常,汉字也能正常显示,但是用 isql 则是空字符,不是你所说的问号“??”。

[root@liuyan-fc5 etc]# export LANG=zh_CN.UTF-8
[root@liuyan-fc5 etc]# isql -v bmis_ds ly ly
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select top 1 staffName from staff
+---------------------------------------------------+
| staffName                                         |
+---------------------------------------------------+
| |
+---------------------------------------------------+
SQLRowCount returns 1
1 rows fetched
SQL>

后来我把 LANG 设置为 zh_CN.GB18030,再用 isql 访问,汉字才正常显示了出来。

[root@liuyan-fc5 etc]# export LANG=zh_CN.GB18030
[root@liuyan-fc5 etc]# isql -v bmis_ds ly ly
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select top 1 staffName from staff
+---------------------------------------------------+
| staffName                                         |
+---------------------------------------------------+
| 刘研                                              |
+---------------------------------------------------+
SQLRowCount returns 1
1 rows fetched
SQL>
分享到:
评论

相关推荐

    Linux下通过odbc连接sqlserver服务器的安装包

    本安装包包含了两个关键组件,它们是连接SQL Server的基石:freetds和unixODBC。 1. **freetds**: freetds是一个开源的库,它实现了对SQL Server和Sybase数据库的TDS(Tabular Data Stream)协议支持。TDS是微软...

    linux操作系统配置ODBC数据源连接SQL Server

    本文详细介绍了如何在Linux操作系统下配置ODBC数据源来连接SQL Server的过程。通过遵循上述步骤,可以轻松实现Linux系统与SQL Server之间的连接。这种连接方式对于那些需要在不同平台之间共享数据的企业尤为重要。...

    linux下连接sqlserver配置及otl编程.docx

    ### Linux下连接SQL Server配置及OTL编程 #### 一、引言 本文将详细介绍如何在Linux环境下配置连接Microsoft SQL Server数据库的相关步骤,并利用Open Transaction Processing (OTL)进行编程。这一过程涉及到安装...

    linux 操作sqlserver源码

    首先,`Linux SQLServer connect`标签表明我们需要关注的是在Linux系统中连接到Microsoft SQL Server的技术。由于原生的Linux不支持直接连接SQL Server,我们需要依赖第三方工具。这里,UnixODBC(Unix Open ...

    Linux下链接SQL2000完整教程

    在Linux环境下,与Windows上的Microsoft SQL Server 2000进行交互可能会遇到一些挑战,但通过使用特定的工具和技术,这个过程是完全可行的。本文将深入探讨如何在Linux上建立到SQL Server 2000的连接,包括安装必要...

    linux数据连接unixodbc

    ODBC是一种广泛使用的数据库应用程序接口,允许应用程序通过统一的方式访问不同的数据库管理系统(DBMS),无论这些系统是SQL Server、Oracle、MySQL还是其他任何支持ODBC的DBMS。 UnixODBC的核心在于它的驱动程序...

    linux下centos7部署sql server.docx

    "Linux 下 CentOS 7 部署 SQL Server" Linux 是一个流行的开源操作系统,而 CentOS 7 是基于 Red Hat Enterprise Linux 的一个发行版。SQL Server 是一个关系数据库管理系统,由微软公司开发。下面是将 SQL Server ...

    CentOS系统安装SQLServer教程

    使用sqlcmd连接SQL Server 最后,您可以使用`sqlcmd`工具连接到SQL Server: ```bash sqlcmd -S localhost -U SA -P 'YourPassword' ``` 请将`YourPassword`替换为您为SA用户设置的密码。 #### 四、注意事项 -...

    laravel5使用freetds连接sql server的方法

    在本文中,我们将深入探讨如何在Laravel 5框架中使用FreeTDS连接到SQL Server数据库。FreeTDS是一个开源的程序库,它实现了TDS(Tabular Data Stream)协议,使得Linux系统能够与Microsoft SQL Server进行通信。这...

    Django 连接sql server数据库的方法

    1. 环境准备:确保你使用的是Windows或Linux操作系统,因为SQL Server可以在这些平台上运行。 2. 安装依赖:首先需要在你的Python环境中安装Django和必要的数据库驱动程序。由于Django默认不支持SQL Server,所以...

    unixODBC-2.3.0

    在Linux环境下,unixODBC扮演了桥梁的角色,连接应用程序和各种数据库服务器,包括SQL Server。 描述中的“ODBC11 sqlserver client for linux”表明这是一个专为连接到Microsoft SQL Server的ODBC驱动程序,适用于...

    sqlserver_driver

    isql -v SQLServer2000 ``` 输入相应的用户名和密码后,如果能成功连接到数据库,则表示配置正确。 #### 六、注意事项 - 在安装过程中遇到任何问题时,建议仔细检查错误信息并查阅官方文档或社区支持。 - 确保...

    c++实现的sql基本功能 Linux,win下可运行

    本项目名为“c++实现的sql基本功能”,它提供了一种在Linux和Windows环境下通过C++实现SQL基本功能的方法。下面,我们将深入探讨这一话题,了解如何利用C++来构建这样的系统。 首先,我们需要理解C++与SQL的接口。...

    unixODBC-devel

    总而言之,UnixODBC-devel是Unix/Linux环境下用于数据库开发的重要工具,通过它,开发者可以构建能够连接多种数据库的软件,而无需关心底层数据库的具体实现。同时,它的存在也简化了Oracle 11g在Linux上的部署和...

    在Linux和WINDOWS下通过ODBC访问Oracle和SQL Server数据库的解决方案

    对于SQL Server,无论在Linux还是Windows环境下,ODBC都是跨平台的连接选择。使用OTL(Oracle Template Library)代码库可以简化ODBC的使用。在Windows下,配置SQL Server的ODBC数据源,通常需要指定服务器名称、...

    Linux下C访问MSSQL2000实例

    在Linux环境下,开发C语言应用程序并使用ODBC(Open Database Connectivity)访问远程Windows主机上的Microsoft SQL Server 2000或2005数据库是一项挑战,但完全可行。本实例将详细阐述如何实现这一目标,涉及的主要...

    基于Linux系统的sqlserver镜像模式(包含见证)

    连接SQL Server,可以安装mssql-tools和unixODBC-devel,设置环境变量,以便使用sqlcmd等工具。在进行镜像模式搭建时,证书的创建和管理是关键步骤,用于加密通信和验证身份。主体服务器和镜像服务器都需要创建证书...

    php(laravel+apache+SQLserver)配置链接SQLserver所需文件

    4. **系统依赖**:在Linux环境中,可能需要安装一些依赖库,如`unixODBC`和`freetds`,它们是连接到SQL Server所需的驱动程序。在Ubuntu上,可以运行以下命令: ``` sudo apt-get install freetds-dev freetds-bin...

    unixODBC-2.2.11-7.1

    总之,UnixODBC是一个在Linux和Unix环境下实现ODBC标准的重要工具,它使得开发者能够轻松地在不同数据库之间切换,简化了跨平台数据库应用的开发和维护工作。通过安装提供的RPM包,用户可以在32位系统上享用UnixODBC...

Global site tag (gtag.js) - Google Analytics