Como me conecto a SQL SERVER

Un saludo a todos.

Soy nuevo en Yii, y necesito si alguien puede ayudarme a darme las indicaciones para conectarme desde Yii a SQL Server.

Muchas Gracias.

Aqui hay algo de informacion para que empieces a leer…

http://www.yiiframework.com/doc/guide/1.1/en/database.dao

Ahi mismo encontraras la cadena de conexion para utilizar sql server… Saludos

Hola Jack,

Mira segun la información que me enviaste debo activar el codigo que hay en CDbconnection.php de la siguiente manera.

$connection=new CDbConnection($dsn,$username,$password);

$connection->active=true;

Y efectivamente lo active, ahora mis datos de conexion estan asi en el archivo main.php y console.php dentro de protected/config

	'db'=>array(


        'class'=>'CDbConnection',


        'connectionString'=>'mssql:host=DESARROLLO-HP;dbname=vivienda',


        'username'=>'usr_fonede',


        'password'=>'fepd_pwd',


		'charset' => 'utf8',


	),

Te pregunto debo configurar algo mas?

tengo el siguiente error,

exception ‘CDbException’ with message 'CDbConnection failed to open the DB conne

ction: could not find driver’ in C:\Projects\CAJAS\yii\framework\db\CDbConnectio

n.php:293

Stack trace:

#0 C:\Projects\CAJAS\yii\framework\db\CDbConnection.php(266): CDbConnection->open()

#1 C:\Projects\CAJAS\yii\framework\db\CDbConnection.php(244): CDbConnection->setActive(true)

#2 C:\Projects\CAJAS\yii\framework\base\CModule.php(372): CDbConnection->init()

#3 C:\Projects\CAJAS\yii\framework\base\CModule.php(101): CModule->getComponent(‘db’)

#4 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(150) : eval()'dcode(1): CModule->__isset(‘db’)

#5 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(150): eval()

#6 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(99): ShellCommand->runShell()#7 C:\Projects\CAJAS\yii\framework\console\CConsoleCommandRunner.php(63): ShellCommand->run(Array)

#8 C:\Projects\CAJAS\yii\framework\console\CConsoleApplication.php(88): CConsoleCommandRunner->run(Array)

#9 C:\Projects\CAJAS\yii\framework\base\CApplication.php(155): CConsoleApplication->processRequest()

#10 C:\Projects\CAJAS\yii\framework\yiic.php(33): CApplication->run()

#11 C:\Projects\CAJAS\fovis\protected\yiic.php(7): require_once(‘C:\Projects\CAJ…’)

#12 {main}

Sinceramente no se que estoy haciendo mal, si me puedes ayudar un poco mas te agradeceria.

Saludos

Jorge, El novato de YII :)

Tienes activada la extension de php_mssql y el pdo en PHP ?

Hola Jack,

Mira, si esta activado, ya que actualmente logro conectarme a sql server haciendo la conexion yo mismo, de la siguiente manera.

$conection = mssql_connect("DESARROLLO-HP","usr_fonede","fepd_pwd") or die("no se puede conectar a SQL Server");

//aqui selecciono la base Northwind que ya trae MS SQL v.8 como ejemplo

mssql_select_db("vivienda",$conection);

//tu consulta la asignas a un string $SQL

$SQL = "SELECT * FROM Empresas";

Funciona de maravilla.

Pero cuando lo hago por YII, No se que pasa.

Gracias Jack

puedes definir el puerto en la conexion y utilizar emulatePrepare


'db'=>array(

'class'=>'CDbConnection',

'connectionString'=>'mssql:host=DESARROLLO-HP;port=1433;dbname=vivienda',

'username'=>'usr_fonede',

'password'=>'fepd_pwd',

'charset' => 'utf8',

'emulatePrepare'=>'false', // con esto desactivado

),

U otra cosa podria ser que intentes utilizar sqlsrv en lugar de mssql en la cadena de conexion

Hola Jack,

Puse eso en el archivo main y console de config y sale lo siguiente, te voy a escribir lo que pongo por CMD para probar la conexion.

C:\Program Files (x86)\Zend\ZendServer\bin>c:\projects\CAJAS\fovis\protected\yiic shell c:\projects\CAJAS\fovis\index.php

Yii Interactive Tool v1.1 (based on Yii v1.1.6)

Please type ‘help’ for help. Type ‘exit’ to quit.

>> echo isset(Yii::app()->db);

exception ‘CDbException’ with message ‘CDbConnection.connectionString cannot beempty.’ in C:\Projects\CAJAS\yii\framework\db\CDbConnection.php:278Stack trace:

#0 C:\Projects\CAJAS\yii\framework\db\CDbConnection.php(263): CDbConnection->open()

#1 C:\Projects\CAJAS\yii\framework\base\CComponent.php(152): CDbConnection->setActive(true)

#2 C:\Projects\CAJAS\yii\framework\db\CDbConnection.php(25): CComponent->__set(‘active’, true)

#3 C:\Projects\CAJAS\yii\framework\YiiBase.php(389): include(‘C:\Projects\CAJ…’)

#4 C:\Projects\CAJAS\yii\framework\YiiBase.php(290): YiiBase::autoload(‘CDbConnection’)

#5 C:\Projects\CAJAS\yii\framework\YiiBase.php(190): YiiBase::import(‘CDbConnection’, true)

#6 C:\Projects\CAJAS\yii\framework\base\CModule.php(371): YiiBase::createComponent(Array)

#7 C:\Projects\CAJAS\yii\framework\base\CModule.php(101): CModule->getComponent(

‘db’)#8 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(150) : eval()'d code(1): CModule->__isset(‘db’)

#9 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(150): eval()

#10 C:\Projects\CAJAS\yii\framework\cli\commands\ShellCommand.php(99): ShellCommand->runShell()

#11 C:\Projects\CAJAS\yii\framework\console\CConsoleCommandRunner.php(63): ShellCommand->run(Array)

#12 C:\Projects\CAJAS\yii\framework\console\CConsoleApplication.php(88): CConsoleCommandRunner->run(Array)

#13 C:\Projects\CAJAS\yii\framework\base\CApplication.php(155): CConsoleApplication->processRequest()

#14 C:\Projects\CAJAS\yii\framework\yiic.php(33): CApplication->run()

#15 C:\Projects\CAJAS\fovis\protected\yiic.php(7): require_once(‘C:\Projects\CAJ…’)

#16 {main}

Gracias Jack.

Leyendo un poco por internet dicen que quizas necesites instalar la extension php_pdo_odbc.dll en tu php

mas que eso no se me ocurre nada…

Hola Jack,

Gracias por tu ayuda, pero no he podido lograrlo, quisiera hacerlo paso a paso, para ver que estoy haciendo mal y no se si me puedas ayudar.

  1. instale la aplicacion (con webapp)

  2. configure los archivos main.php y console.php dentro de config de la siguiente manera

     	'connectionString' => 'mssql:host=DESARROLLO-HP;dbname=vivienda',
    
    
     	'emulatePrepare' => false,
    
    
     	'username' => 'usr_fonede',
    
    
     	'password' => 'fepd_pwd',
    
    
     	'charset' => 'utf8',
    

El archivo test no lo he tocado y no he tocado ningún otro archivo

Algunas preguntas.

  • Como hago para comprobar si quedo bien la conexión con Sql Server?

  • Le falta algo a esos 2 archivos?

Les ofrezco disculpas por escribir tanto pero necesito lograr esa conexión y creo que la mejor manera es hacerla paso a paso.

Gracias Jack

[indent][/indent]

Hice unas rapidas pruebas y en php active lo siguiente:


php_mssql

php_pdo

php_pdo_mssql

El mensaje del driver no encontrado ya no aparece porque se activo php_pdo_mssql … en realidad mis problemas fueron otros que creo que solamente tienen que ver con la configuracion de mi servidor de BD … cosas de configuracion del usuario y demas… pero en la cadena de conexion no tuve problemas.

Hola Jack,

Te pregunto algo,

Hay algo que pueda hacer para chequear la conexión, y saber si se está conectando antes de comenzar a crear los CRUD.

Gracias Jack

Hola jorgelondono lograste conectarte? tenia el mismo problema con SQL SERVER, anda perfecto con php, pero lo meto a yii y ya no funciona, no me conecta

‘db’=>array(

                    'connectionString' => 'sqlsrv:server=192.168.10.29;database=PBI',


                    'username' => 'MYUSER',


                    'password' => 'MYPASS',


            ),

saludos.

J.

Hola Jorge.

Puedes comprobar la conexión intentando usar el generador de codigó de Yii, y de esta forma tendras la certeza de que tienes activa la conexión con la BD.

Saludos,

Nota: de acuerdo a lo que has mostrado, pensaría que te falta activar en el servidor, en los modulos de PHP la extensión para trabajar con SQL Server.

Hola, yo tenia el mismo problema pero pude conectarme con yii2 a sqlserver2008. Les paso un link con el video q me sirvio muchisimo. https://www.youtube.com/watch?v=1eudslEMba0.

Pero básicamente sino me falla la memoria pq hace mucho q lo hice es:

se descarga el driver de sqlserver para php (ojo no cualquiera , se debe ver q versión de php se tiene instalado y de ahí se descarga el driver de aqui: https://msdn.microsoft.com/en-us/library/cc296170.aspx), si tu versión de php no esta en el listado te conviene instalar una versión inferior o superior q este contemplado en el la pagina de msdn.

luego se sigue los pasos del video.

mi archivo de conexión quedo de la siguiente manera

<?php

return [

'language'=&gt;'es',


'components' =&gt; [


    'db' =&gt; [


       'class' =&gt; 'yii&#092;db&#092;Connection',


       'dsn' =&gt; 'sqlsrv:Server=SERVIDORBD;Database=expedientes',





        'username' =&gt; 'sa',


        'password' =&gt; 'tucontraseña',


        'charset' =&gt; 'utf8',


    		   


               


    ],


    'mailer' =&gt; [


        'class' =&gt; 'yii&#092;swiftmailer&#092;Mailer',


        'viewPath' =&gt; '@common/mail',


        // send all mails to a file by default. You have to set


        // 'useFileTransport' to false and configure a transport


        // for the mailer to send real emails.


        'useFileTransport' =&gt; true,


    ],


],

];

las extensiones php_mssql

php_pdo

php_pdo_mssql ya se no usan mas por eso no puedes lograr la conexion, cuando descargues el divres de sqlserver para php, al instalarlo te generara nuevas extensiones q hay q elegir la q corresponda, numero de version y si la base de datos esta en la misma pc q el sitio. Esa extension seleccionada se la pegua en la carpeta de extensiones del php, se la agrega en php.ini para q quede seleccionada. Espero q sirva de ayuda.

Pd: todo esto esta explicado mejor en el video. Saludos