A continuación muestro como conectar codeigniter con mssql en ubuntu
Para ubuntu 14 con php5
apt-get install unixodbc freetds freetds-dev tdsodbc php5-odbc
Para Ubuntu 16 con php7
apt-get install unixodbc freetds-common freetds-dev tdsodbc php7.0-odbc
Reiniciar Apache
service apache2 restart
Editar /etc/freetds/freetds.conf
[nombre-servidor]
host = 192.168.10.10
port = 1433
tds version = 7.3
La version TDS 7.3 es para SQL Server 2008, para ver un listado de los protocolos visitar este link
Editar /etc/odbcinst.ini
[TDS]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Description = FreeTDS driver
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
Editar /etc/odbc.ini
[mi-servidor]
Driver = TDS
Description = Descripcion
ServerName = nombre-servidor
Database = bd_ejemplo
El ServerName es el nombre del servidor en el archivo de configuración freetds.conf, en el archivo de configuración de codeigniter debe tener algo así:
$db['mssql'] = array(
'dsn' => '',
'hostname' => 'dsn=my-server;uid=myusername;pwd=mypassword',
'username' => '',
'password' => '',
'database' => 'MyDatabase',
'database' => '',
'dbdriver' => 'odbc',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
y se llama de esta forma:
class Prueba_Model extends CI_Model{
public function __construct(){
parent::__construct();
$this->pruebadb = $this->load->database('mssql', true);
}