Conexión SQL Server

492 views
Skip to first unread message

mycs

unread,
Apr 26, 2011, 3:55:48 PM4/26/11
to symfony-es
Hola,

Estoy tratando de conectarme a un servidor windows donde esta
instalado SQL Server pero no logro hacerlo.
Instale FreeTDS y probe la conexión al servidor windows por consola y
a través de PHP y funciono bien pero al intentarlo desde symfony no.

El código de prueba que funciono es:

<?php

try
{
$db = new PDO('dblib:host=sqlserver;dbname=crm','EQUIPO
\equipo65','23919');

}
catch(PDOException $exception)
{
die("Unable to open database.<br>Error message:<br><br>$exception.");
}
echo '<h1>Successfully connected!</h1>';
$query = 'SELECT * FROM usuarios';
$statement = $db->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_NUM);
print_r($result);
?>

En el archivo databases.yml tengo lo siguiente:
all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: 'dblib:host=sqlserver;dbname=crm'
username: 'EQUIPO\equipo65'
password: 23919

No se si la sintaxis no es correcta pero al intentar hacer
doctrine:build --all me da error al intentar crear la bd en el
servidor.


Gracias de antemano por la ayuda

SuperGabo

unread,
Apr 26, 2011, 6:42:33 PM4/26/11
to symfony-es
Yo trabajo con un server en windows 2003 y la conexión si funciona,
debes de ponerla asi:

all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: 'mssql:host=127.0.0.1\INSTANCIADELABD;dbname=jobeet'
username: jobeet
password: jobeet
encoding: latin1
persistent: true
pooling: true

donde INSTANCIADELABD es la que tienes en tu server de SQLSERVER,
para verla debes de entrar a las propiedades de tu base de datos y hay
un campo que se llama "Instance Name" ese es el nombre que debes de
poner. Si no trae nada entonces solo pones 127.0.0.1\; si aun asi no,
intenta con el nombre del servidor y la instancia. Ahora el username
de preferencia que sea uno creado desde la BD y que le asignes a este
usuario los privilegios a esta BD.

Salu2

lvie...@gmail.com

unread,
Apr 26, 2011, 6:48:27 PM4/26/11
to symfo...@googlegroups.com
Crea un odbc y en el servidor y lo colocas en el dsn, 0 estres..
Enviado desde mi BlackBerry de Movistar
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.

mycs s

unread,
Apr 27, 2011, 9:42:28 AM4/27/11
to symfo...@googlegroups.com
SuperGabo intente lo que me dices pero sigue sin funcionar :-S Estoy usando SQL Server 2005 y no veo el nombre de la instancia sin embargo coloque el nombre del servidor pero aun asi me da este error:  SQLSTATE[HY000]: General error: 3903 General SQL Server error: Check messages from the SQL Server [3903] (severity 16) []

iviera tambien probe con lo del odbc pero creo que tampoco lo coloque bien en el dsn de la conexion porque no funciono :-(

SuperGabo

unread,
Apr 27, 2011, 8:26:02 PM4/27/11
to symfony-es
Es que estoy viendo que usas en tu conexión "dblib" y yo en mi caso
mssql que es el dll que me ofrece Windows.

¿Te estás conectando desde linux a windows? Cuando me tarde la semana
en resolver esto vi que de linux a windows es complicado y que la
mejor opción es la de ODBC. Yo no tuve problemas porque fue en un
mismo server sobre windows y ocupe la librería nativa que es:
php_mssql.dll por eso en mi conexión uso "mssql", pero no se si dblib
de el soporte de consultas a mssql. Pero si te responde la conexión,
es decir, si ingresas al MSSQL entonces yo creo que es de la instancia
o el usuario. En el SQL Server Configuration Manager verás en tu raiz
hasta abajo uno que dice "Aliases" el que aparece como Alias Name es
el nombre de tu instancia.

Ahora arriba en el que dice "protocolos for TUNOMBREDEINSTANCIA" en la
derecha le das doble click sobre TCP/IP te vas a la segunda pestaña
"Ip adresses" y ahi tienes que activar el acceso a esa instancia (en
la parte que dice "Enabled")

Espero que esto te pueda ayudar.

Suerte.

mycs s

unread,
Apr 28, 2011, 2:44:51 PM4/28/11
to symfo...@googlegroups.com
Gracias por responder  SuperGabo.

Si estoy intentando conectar desde linux a windows.

Coloque el nombre de la instancia pero igual no se conecta.
No entiendo por qué de esta forma: $db = new PDO('dblib:host=sqlserver;dbname=crm','INSTANCIA\equipo65','23919');  funciona y colocando lo mismo en el dsn del archivo databases no :-S

Configure freetds de esta forma:
En odbc.ini:
[Production]
Driver                  = FreeTDS
Description             = Production MS SQL Database
Servername              = sqlserver
Database                = crm
UID                     = content1_badsg-1

En freetds.conf:

[sqlserver]
        host = 192.168.0.151
        port = 1433
        tds version = 7.0


Estan habilitadas las conexiones ip, lo revise.

SuperGabo

unread,
Apr 28, 2011, 6:13:31 PM4/28/11
to symfony-es
Ok, funciona con php nativo .. pero ¿Doctrine lo soporta? es decir,
¿El PDO que usa si permite hacer conexión con freetds? Sería cuestión
de revisar la documentación a ver cuales soporta Doctrine.

Por el momento no se me ocurren otras posibilidades.

Espero que te funcione y nos digas como lo hiciste :)

Salu2

mycs s

unread,
Apr 29, 2011, 4:54:40 PM4/29/11
to symfo...@googlegroups.com

Julian Lasso

unread,
Apr 29, 2011, 6:38:22 PM4/29/11
to symfo...@googlegroups.com
pregunta inocente la mía, no he estado al tanto de esta discusión y por eso pregunto
tienen instalada la extensión mssql??

El 29 de abril de 2011 15:54, mycs s <mycs.s...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a symfo...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a symfony-es+...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/symfony-es?hl=es.



--
"Software is like sex: it's better when it's free" - "El software es cómo el sexo: es mejor cuando es gratis" (Linus Torvalds, creador del Linux)

Siempre recuerda estas frases y verás que bien te pueden salir las cosas.
"La experiencia no se improvisa"
"La envidia no es buena mata el alma y la envenena"
"Solo pone un poco de lógica y sentido común a la situación y verás que con un muy buen análisis todo saldrá bien"

SuperGabo

unread,
Apr 30, 2011, 12:56:29 AM4/30/11
to symfony-es
Yo voy por la idea de que en tu php.ini no tienes el PDO o la libreria
de sybase para PDO.

En http://www.symfony-project.org/doctrine/1_2/es/02-Connections,
dice:
Doctrine soporta todos drivers con soporte PDO. PHP debe ser compilado
con el driver PDO y todos los drivers PDO_* que desees usar. Debajo
esta una lista de las bases de datos con la que funcionará PDO.
Nombre Descripción
MS SQL Server Microsoft SQL Server and Sybase Functions (PDO_DBLIB)

Estilo PDO

Puedes alternativamente especificar tu info DSN en el estilo PDO.

all:
doctrine:
class: sfDoctrineDatabase
param:
dsn: driver:dbname=database_name;host=localhost
username: username
password: password

¿Otra sugerencia?


On 29 abr, 15:54, mycs s <mycs.symf...@gmail.com> wrote:
> Segúnhttp://www.doctrine-project.org/documentation/manual/1_0/hu/component...
Reply all
Reply to author
Forward
0 new messages