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 🙂