博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下通过ODBC连接SQL Server
阅读量:5808 次
发布时间:2019-06-18

本文共 2625 字,大约阅读时间需要 8 分钟。

hot3.png

一 测试环境

操作系统:  Fedora 8

数据库:     SQLServer2000 installed in Windows Xp Professional,

                   数据库有用户sa,密码是syth7777,数据库文件是QJKZDB

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

                2  安装的SQLServer2000是不会打开1433端口的,所以请Windows Xp 用户在安装完SQLServer之后一定装上SQLServer SP3布丁,可以使用命令netstat -a 来查看是否打开1433端口

                3  对于Windows Xp,缺省防火墙是不让1433端口来通讯的,所以必须关掉Windows的防火墙,否则老是连接不成功,可是最可气的是在别的Windows机器使用SQLServer的命令isql能够访问数据库(不用关闭防火墙)。通过抓包工具发现根本就不通过1433端口通讯,而是通过445或139内部端口通讯呀,真要命呀,看来Windowns东西是好,但是也太霸道了呀!

                4  在Xp Sp2安装SQLServer2000时必须要打chs_sql2ksp3.exe补丁,如果没有这个补丁,telnet ip 1433会连接不了,当然从远程客户端连接不上,晕呀!

Linux系统的ODBC

               unixODBC-2.2.11.tar.gz (  )

连接SQLServer或Sybase的驱动

              freetds-stable.tgz (  )

二 安装配置(必须在root下用户安装)

1、安装unixODBC

# tar vxzf unixODBC-2.2.11.tar.gz

# cd unixODBC-2.2.11
# ./configure --prefix=/usr/local/unixODBC --enable-gui=no --enable-drivers=no --with-qt-dir=/usr/lib/qt-3.3
# make
# make install

现在的最新版本是2.2.12,个人用的是2.2.11(落伍了),下载地址  。unixODBC图形界面貌似用Qt2.2做得,因为本人电脑里装的Qt3.3.8和Qt4.3.1,这里就不编译gui图形界面了。

2、安装freetds

# tar vxzf freetds-stable.tgz

# cd freetds-0.64
# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0
# make
# make install

 

3、配置freetds   # cd /usr/local/freetds

# vi etc/freetds.conf 
修改以下的一段,并把;去掉
改好之后的内容: [global]
        # TDS protocol version
        tds version = 8.0

;[SQLServer2000]

;        host = 10.0.0.3
;        port = 1433
;        tds version = 8.0
;        client charset = UTF-8
 

其中的[SQLServer2000]代表在客户端使用的服务器名称(在tsql命令中要加入 -S SQLServer2000),host代表SQLServer服务器的IP地址,port代表端口.client charset 是客户端使用的字符集, client charset 必需大于或等于服务端数据库使用的字符集。

服务端数据库是 MS SQL Server 2000,字符集是 GB2312。那么client charset 可以设置为 GB2312(等于),GB18030(大于),UTF-8(大于),但不能设为ISO-8859-1(小于), Shift_JIS(不等于).,由于 UTF-8 是所由字符集的超集,因此设置为 UTF-8 总是可行的。此外,FreeTDS的client charset不能设置为 UTF16。这时目前该软件设计的局限,其官方网站称,在未来版本中可能会增加对client charset UTF16的支持。

测试连接:

# /usr/local/freetds/bin/tsql -S 10.0.0.3 -U sa

locale is "zh_CN.UTF-8"
locale charset is "UTF-8"
Password: syth7777
1> quit
#

这说明安装freetds成功

 

4、配置unixODBC

# cd /usr/local/unixODBC

向ODBC添加SQLServer驱动

# vi etc/odbcinst.ini

写入如下内容:   [ODBC]

Trace           = Yes
TraceFile       = /tmp/sql.log
ForceTrace      = Yes
Pooling         = No

[SQLServer]

Description     = SQLServer
Driver          = /usr/local/freetds/lib/libtdsodbc.so
Setup           = /usr/local/freetds/lib/libtds.so
UsageCount      = 1
CPTimeout       = 5
CPReuse         = 5
FileUsage       = 1   

保存退出 

添加DSN
# vi etc/odbc.ini

写入如下内容

[QJKZDB]
Driver          = SQLServer  
Description     = SQLServer
Server          = 10.0.0.3
Database        = QJKZDB
Port            = 1433   

注意Driver驱动要写odbcinst.ini中的驱动名称,Database是数据库的名称

保存并退出。

测试ODBC的连接

# bin/isql -v QJKZDB sa syth7777
SQL> quit
 

OK,测试通过

转载于:https://my.oschina.net/u/1464512/blog/917919

你可能感兴趣的文章
updatepanel中的GridView中的radiobuttonList怎么设置样式
查看>>
快速学习javaSE基础4---面向对象的编程
查看>>
关于Android四大组件的学习总结
查看>>
LeetCode 398: Random Pick Index
查看>>
uva live 7638 Number of Connected Components (并查集)
查看>>
Linux下设置svn开机自启动
查看>>
java只能的round,ceil,floor方法的使用
查看>>
雷公藤多甙治疗类风湿关节炎遭质疑
查看>>
Web前端开发学习误区,你掉进去了没?
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
numpy模块资源
查看>>
puppet任务计划
查看>>
nw打包
查看>>
【CQOI2011】放棋子
查看>>
一起来读多视图几何
查看>>
作用域声明提升
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
***CodeIgniter框架集成支付宝即时到账支付SDK
查看>>
Struts2访问ServletAPI的三种方式
查看>>