为了解决Linux系统链接MSSql Server的问题,微软为Linux系统提供了链接MSSql Server的ODBC官方驱动。经过官方驱动,Linux程序能够方便地对MSSql Server进行访问。php
官网提供了三个版本的驱动,分别用于如下发行版的Linux系统:git
64bit Red Hat Enterprise Linux 5github
64bit Red Hat Enterprise Linux 6sql
64bit SUSE Linux Enterprise 11 Service Pack 2数据库
(实测 64bit CentOS 6.4 和 64bit CentOS 7.1 能够安装使用64bit Red Hat Enterprise Linux 6版本的ODBC驱动)服务器
安装配置过程能够经过如下步骤完成:app
1. 下载安装包框架
Red Hat 5/6:https://www.microsoft.com/en-us/download/details.aspx?id=36437工具
SUSE 11:http://www.microsoft.com/en-us/download/details.aspx?id=34687测试
2. 安装unixODBC 2.3.0
# 以red hat 6版本为例 tar xzf msodbcsql-11.0.2270.0.tar.gz cd msodbcsql-11.0.2270.0 ./build_dm.sh
3. 安装Microsoft ODBC Driver 11 for SQL Server on Linux
./install.sh install
4. 经过命令行链接到数据库服务器
安装完驱动后就能够经过驱动自带的命令行工具测试链接了:
sqlcmd -S 192.168.1.10 -U sa -P sa -d master -Q 'select "Hello World"'
假如链接成功,该命令就会输出“Hello World”的查询结果
5. 配置unixODBC数据源
sqlcmd命令除了能够经过指定地址、用户名密码链接数据库外,还能够经过指定数据源名称链接数据库。数据源能够经过unixODBC所提供的odbcinst命令进行配置:
1). 创建模版配置文件 template.ini,内容以下
[DataSourceName] Driver = ODBC Driver 11 for SQL Server Server = 192.168.1.10 UID = sa PWD = sa Database = master
2). 导入配置
odbcinst -i -s -l -f template.ini
执行完以后,能够再次经过sqlcmd命令工具来测试链接
sqlcmd -S DataSourceName -Q 'select "Hello World"'
该命令和前面的直接指定IP地址和用户名密码的命令获得一样的结果
6. 经过PHP链接到数据库服务器
该例子是经过修改CodeIgniter 3.0.0的mssql driver,把全部原mssql_* API 替换成odbc_* API,让全部数据库操做都经过ODBC链接进行,同时也复用了原CodeIgniter框架对mssql的支持。项目代码托管在github上:https://github.com/ratzhou/CodeIgniter。如下是使用修改后的CodeIgniter框架经过ODBC链接MSSql Server的例子:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); /* * file name: application/controllers/Test.php */ class Test extends CI_Controller { public function index() {
$config['dbdriver'] = 'mssql'; $config['dsn'] = 'DataSourceName';
// 这里仍然须要指定数据库名和用户名密码
$config['database'] = 'my_database'; $config['username'] = 'sa'; $config['password'] = 'sa';
$mssql = $this->load->database($config, true); $result = $mssql->get('my_table'); var_dump($result->result_array()); } }