Browsing Posts tagged freetds

Browsing Posts tagged freetds

需要安装以下:

  1. yum install freetds freetds-devel unixodbc unixodbc-devel
  2. cpan -i DBD::ODBC
  3. 然后在/etc/odbc.ini中指定数据库连接字符串

/etc/odbc.ini的配置
[这里写入ODBC的dsn名称]
Description = 描述,随便写
Driver = /usr/lib/libtdsodbc.so (如果是64位系统,注意填lib64或者做个软连接)
Server = 填入数据库IP
Database = Master
Port = 1433
TDS_Version = 9.0(SQLServer 2K填8.0,否则无法使用!)
try domain login = yes
try server login = yes
nt domain = DOMAIN

以上在Redhat/Centos 5系列上应该都可以。

TDS是Sqlserver的通讯协议。如果了解TDS协议,在不加密的情况下就能做各种有趣的事:

  • 截获所有客户端发来的Sql语句
  • 获取所有结果集
  • 特定语句的执行耗时

因为抓包完全与Sqlserver服务端独立,所以不会对性能造成太大影响,至少比开profiler好。事实上,由于加密不是默认选项,几乎没人多此一举去加密TDS,除非是远距离的通信,我几乎没遇到过。

在这样前提下,WireShark之类就有了用武之地。可惜的是,TDS不是完全开放的协议,尽管微软和Sybase都公布了一定资料,但许多还是遮遮掩掩的。目前的两份协议是:

带着悲哀的心情去读这些协议可能更好:

The TDS protocol comes in several varieties, most of which had not been openly documented because they were considered to be proprietary technology.

FreeTDS是一个开源的TDS实现,使得PHP、Perl、Python等能直接连到Sqlserver。最有用的两篇是:

User Guide是推荐先看的。协议了解的越多就能更加深入的看问题,从本质上认识东西尽管很痛苦,但一旦掌握,就可不受制于特定工具给的接口。这和为什么学TCP/UDP/IP协议的道理一样。在最困难的时候,它们才是最好的朋友。

你可能感兴趣的:(linux,SQL Server,centos,python,Sybase)