Linux環境下通過ODBC訪問MSSql Server


為了解決Linux系統連接MSSql Server的問題,微軟為Linux系統提供了連接MSSql Server的ODBC官方驅動。通過官方驅動,Linux程序可以方便地對MSSql Server進行訪問。

官網提供了三個版本的驅動,分別用於以下發行版的Linux系統:

64bit Red Hat Enterprise Linux 5

64bit Red Hat Enterprise Linux 6

64bit SUSE Linux Enterprise 11 Service Pack 2

(實測 64bit CentOS 6.4 和 64bit CentOS 7.1 可以安裝使用64bit Red Hat Enterprise Linux 6版本的ODBC驅動)

安裝配置過程可以通過以下步驟完成:

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()); } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM