爲了解決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()); } }