Codeigniter login MSSQL / SQLSRV

Je travaille sur une application web qui se connecte à une database MSSQL. J'ai précédemment réussi à me connecter à la database sans aucun problème, mais j'ai apporté une modification mineure au file sqlsrv_driver. J'ai rencontré l'erreur ci-dessous, a ramené mes modifications dans le file d'origine, mais il y a encore des problèmes.

Je me suis assuré que j'ai des pilotes MS appropriés installés, le numéro de port correct utilisé, etc cependant son returnnant cette erreur:

Unable to connect to your database server using the provided settings. Filename: D:...\system\database\DB_driver.php Line Number: 124 

Suite à cela, j'ai fait une connection en dehors du codeigniter via la fonction sqlsrv_connect. Lequel une connection réussie est faite sans erreurs.

Pourquoi ai-je cette erreur?

Pour la connection de PHP-> SQLSrv vous devez installer ces pilotes:

une. Microsoft Drivers 3.0 pour PHP pour SQL Server (SQLSRV30.EXE)

b. Package redissortingbuable Microsoft Visual C ++ 2010 (32 bits / 64 bits)

c. Client natif Microsoft® SQL Server® 2012 (sqlncli.msi)

Et ajoutez cette ligne dans le file php.ini:

 extension=php_sqlsrv_54_ts.dll 

Le pilote sqlsrv est buggé. Ouvrez /system/database/drivers/sqlsrv/sqlsrv_driver.php

Pour autoriser pconnect dans votre configuration, remplacez la ligne 89 par

 $this->db_connect(TRUE); 

à

 return $this->db_connect(TRUE); 

Si vous voulez utiliser affected_rows correctement, changez la ligne 274 de

 return @sqlrv_rows_affected($this->conn_id); 

à

 return @sqlsrv_num_rows($this->result_id); 

J'ai vu plusieurs suggestions sur la façon de corriger _execute posté ailleurs, mais changer _execute pour ne pas utiliser Scrollable va casser les sessions stockées si vous utilisez aussi sqlsrv pour la validation de la session.

Je viens de résoudre ce problème. Et je me connectais à MSSQL hébergé avec Microsoft Azure

Les étapes que j'ai suivies après plusieurs searchs sur internet sont les suivantes:

database.cfg:

 $db['default']['hostname'] = 'XXXXXXX.database.windows.net'; $db['default']['username'] = 'username'; $db['default']['password'] = 'password'; $db['default']['database'] = 'databasename'; $db['default']['dbdriver'] = 'sqlsrv'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = FALSE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['ssortingcton'] = FALSE; 

Principalement dbdriver, pcconnect et le nom d'hôte que vous devriez configurer correctement. Le repos est commun. Obtenez le nom d'hôte de vos informations de database azure.

Et j'ai également modifié quelques files système car j'ai entendu dire qu'il y avait des problèmes avec le pilote DB.

system / database / drivers / sqlsrv / sqlsrv_driver.php

 function db_pconnect() { //$this->db_connect(TRUE); return $this->db_connect(TRUE); } 

et

 function affected_rows() { //return @sqlrv_rows_affected($this->conn_id); return @sqlsrv_num_rows($this->result_id); } 

J'ai pu me connecter à la database et créer une application de database.

J'espère que cela aidera quelqu'un dans le besoin 🙂