Pular para o conteúdo principal

Conectar SQL Server no Codeigniter

Ontem (26/11) postei como fiz as configurações para conectar ao banco SQL Server através da função sqlsrv_connect(). No entanto, não fiquei totalmente satisfeito com meu problema real, que era conectar o banco SQL Server usando o framework Codeigniter. Por isso esse POST de hoje, em que vou mostrar como fiz essa conexão, que é bem simples diga-se de passagem.

Vamos lá! A primeira coisa a ser feita, caso você não tenha feito, é realizar a configuração das DLL’s php_pdo_sqlsrv_54_ts.dll e php_sqlsrv_54_ts.dll no seu servidor Apache e no PHP.INI.
Para saber mais como fazer essa configuração veja esse POST em que mostrei como fiz essa configuração: http://www.marceloalmeida.net/2013/11/conectar-banco-sql-server-usando-php.html

Feita a configuração, certifique-se que sua versão do Codeigniter está com o driver SQLSRV. Para conferir isso você poderá ir dentro da pasta do Codeigniter em "system\database\drivers" deverá ter a pasta do driver SQLSRV dentro. Caso não tenha, sugiro que baixe a versão mais recente do Codeigniter (http://ellislab.com/codeigniter/user-guide/installation/downloads.html), que já contempla essa atualização de driver.

Fazendo as configurações e assegurando que o framework está com o driver, basta configurar o seu arquivo database.php que está na pasta "application\config", da seguinte maneira:

$db['default']['hostname'] = 'IP_DO_SERVIDOR';
$db['default']['username'] = 'USUARIO_DO_BANCO';
$db['default']['password'] = 'SENHA_DO_BANCO';
$db['default']['database'] = 'BANCO_DE_DADOS';
$db['default']['dbdriver'] = 'sqlsrv'; //Por padrão vêm mysql. Altere para sqlsrv.
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE; // Por padrão vem TRUE. Altere para 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']['stricton'] = FALSE;

A grande sacada dessa configuração está no atributo pconnect e dbdriver que devem ser alterados. É isso! 
Espero que tenha dado certo com vocês! Se gostou, divulgue o POST, comente e contribua. Se não gostou,
comente também e vamos juntos melhorar.

Abraço a todos!




Comentários

  1. Cara muito bom seu post, mas infelizmente meu problema continua!!
    estou usando o xampp 1.7.3 VC6 e estou usando o codeigniter 2.1.4

    ResponderExcluir
    Respostas
    1. Valeu! Muito Obrigado pelo acesso. Mesmo inserindo as DLL's e fazendo como nesse POST http://www.marceloalmeida.net/2013/11/conectar-banco-sql-server-usando-php.html não resolveu?

      O que acontece quando você tentou conectar ao banco?

      Se te ajuda, utilizo aqui a versão do Xampp 1.8.2 no Windows 8 de 64 bits.

      Excluir
    2. Marcelo, quando tento me conectar aparece essa mensagem:

      A Database Error Occurred
      Unable to connect to your database server using the provided settings.
      Filename: C:\xampp\htdocs\sqlserver\system\database\DB_driver.php
      Line Number: 124

      Estou realizando a conexão da seguinte forma::

      $active_group = 'default';
      $active_record = TRUE;

      $db['default']['hostname'] = '192.168.1.5\minascopy';
      $db['default']['username'] = '***';
      $db['default']['password'] = '*******';
      $db['default']['database'] = 'CorporeRM_D1';
      $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']['stricton'] = FALSE;

      e as demais configurações assim como você postou.

      Instalei o xampp 1.8.2 e meu windows é o 8 64bits!!
      coloquei as DLL`s como no outro tutorial.

      O único avanço que tive foi que meu xampp depois que instalei a versão 1.8.2 parou de dar error na hora de iniciar o servidor.

      talvez esteja pecando na configuração dos dados do banco, mas estou utilizando as mesma informações que coloco no próprio sqlserver express.

      Excluir
    3. Você tentou utilizando apenas o IP do servidor? Sem a instância, no caso \minascopy? Utilizo aqui somente o IP e as demais informações que conecto no SQLServer Express e inclusive, minha conexão também é com base de dados do CorporeRM.

      Como disse no outro comentário, tente primeiro fazer uma conexão simples com o banco pra tentar identificar onde está o erro.

      $host = 'MEUSERVIDOR;
      $user = USUARIO_DO_BANCO';
      $senha = 'SENHA_DO_BANCO';
      $base = 'BASE_DE_DADOS';

      $config = array("Database" => $base, "UID" => $user, "PWD" => $senha);
      $con = sqlsrv_connect($host, $config);

      If($con){
      echo “Conectato com sucesso!”;
      }
      else{

      echo “Não foi possível conectar ao banco de dados!”;

      }

      Boa Sorte!

      Excluir
    4. já tentei só com o IP e também não dá, será que pode ser alguma outra configuração?
      IIS ou outra coisa??

      Excluir
  2. Completando: Tente fazer a conexão simples com o banco pra vê se conecta.

    $host = 'MEUSERVIDOR;
    $user = USUARIO_DO_BANCO';
    $senha = 'SENHA_DO_BANCO';
    $base = 'BASE_DE_DADOS';

    $config = array("Database" => $base, "UID" => $user, "PWD" => $senha);
    $con = sqlsrv_connect($host, $config);

    If($con){
    echo “Conectato com sucesso!”;
    }
    else{

    echo “Não foi possível conectar ao banco de dados!”;

    }

    ResponderExcluir
    Respostas
    1. tentei e também não foi!

      Não foi possível conectar ao banco de dados!

      Excluir
  3. Marcelo, fazendo uma depuração da conexão achei esses erros, algo sobre instalar o sql server client native 2012:

    Não foi possível conectar ao banco de dados!Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -49 [code] => -49 [2] => This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 [message] => This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712 ) [1] => Array ( [0] => IM002 [SQLSTATE] => IM002 [1] => 0 [code] => 0 [2] => [Microsoft][ODBC Driver Manager] Nome da fonte de dados n�o encontrado e nenhum driver padr�o especificado [message] => [Microsoft][ODBC Driver Manager] Nome da fonte de dados n�o encontrado e nenhum driver padr�o especificado ) )

    ResponderExcluir
  4. Possivelmente alguma configuração do Apache, PHP ou das DLL's não estão corretas. Já que até refiz aqui a conexão com meu banco do SQLServer e ambos deu certo. Só pra constar no PHP.ini você colocou lá: extension=php_pdo_sqlsrv_54_ts.dll extension=php_sqlsrv_54_ts.dll

    ResponderExcluir
    Respostas
    1. Sim eu coloquei conforme você havia falado no tutorial, mas está aparecendo o erro acima quando dou um print_r. algo relacionado ao drive ODBC.
      estou pesquisando sobre para saber o que fazer.

      estou pensando em reinstalar tudo novamente para ter certeza que não pulei nenhum passo.

      caso tenha novas informações por favor poste aqui, muito obrigado pela ajuda.

      tentarei também realizar os procedimento em um servidor 2008 R2 para ver se pode ser alguma compatibilidade com o windows.

      Até mais.

      Excluir
  5. Respostas
    1. Será o mesmo IP do computador/servidor que seu SQL Server estiver instalado!

      Excluir

Postar um comentário

Postagens mais visitadas deste blog

Resolvendo problema na instalação do Moodle 3.1 [mysql_full_unicode_support]

Fala Galera! Recentemente fui instalar a versão do 3.1 do Moodle e me deparei com a seguinte mensagem de erro da instalação: Ou seja, a mensagem está falando que o seu banco de dados foi criado em um formato de arquivos não suportado. Na maioria das vezes a collaction criada automaticamente é LATIN1 e ele está pedindo UTF-8. Para resolver esse problema basta rodar o seguinte SQL em seu banco de dados MySQL. ALTER SCHEMA `NOME_DO_SEU_BANCO`  DEFAULT CHARACTER SET utf8  DEFAULT COLLATE utf8_general_ci; Feito isso prossiga normalmente com sua instalação do Moodle 3.1 e desfrute das novidades que essa versão traz. Espero que tenha gostado e até mais.

[PERGUNTAS E RESPOSTAS] Como saber o número total de alunos cadastrados no Moodle através de uma consulta SQL?

Olá Pessoal, Tudo Bom! Hoje vamos fazer um POST com uma pergunta do Rodrigo nos comentários aqui do blog, que foi a seguinte: "Como saber o numero total de alunos cadastrados no Moodle através de uma consulta no Mysql?" Vamos entender primeiramente que o Moodle define suas permissões por contexto. Existem as permissões globais de administração e existem as permissões contextuais da sala de aula. Por exemplo: Um usuário em um determinado curso pode ser aluno e em outro determinado curso pode ser professor. Ou seja, creio que o mais prudente para se saber o número de fato de alunos seja saber o número de alunos por curso. Para isso fiz um post com o tema:  Relatório de alunos matriculados por curso no Moodle em SQL Diante disso, podemos saber todos os usuários que possuem o papel de aluno, através do SQL abaixo. SELECT count(DISTINCT(mdl_user.id)) as TOTAL  FROM mdl_role_assignments  JOIN mdl_user ON mdl_user.id = mdl_role_assignments.userid  JOIN mdl_...

Criando e Sincronizando Modelo Entidade-Relacionamento com MySQL Workbench

Olá Pessoal, tudo bem? Hoje vou mostrar duas funcionalidades muito interessantes do MySQL Workbench. Pra quem não sabe, o MySQL Workbench é uma ferramenta gratuita de criação, design, modelagem, além de outras funcionalidades de gerenciamento de bancos MySQL. É uma ferramenta muito completa, a minha preferida para trabalhar com banco de dados MySQL. Vamos lá! - Baixe e instale o Workbench. Para fazer o download clique aqui CRIANDO BANCO DE DADOS - Depois de instalado vá em CREATE NEW EER MODEL - Você poderá alterar o nome do banco de dados, clicando duas vezes no nome do banco, como na imagem abaixo. No meu caso dei o nome de "meu_banco": - Adicionando tabelas ao seu banco de dados. Veja na imagem abaixo: - Criei o nome de minha tabela "tbl_usuarios", criando os campos ID (INT, NOT NULL, e AUTO INCREMENTO), NOME, EMAIL, USUARIO, SENHA e DATA_CRIACAO. Você criará o seu banco de acordo a sua necessidade. O MySQL Workbench vai te fornecer s...