PDA

Ver la versión completa : PHP Gurús de las BBDD yo os invoco! Conexión a SQL Server desde php



faraday
22/01/2016, 09:12
Tengo que acceder a una bbdd de SQL Server y he pensado hacerlo desde PHP en una Raspberry Pi.
Simplemente es leer unos valores de tabla y subirlos a MySQL en la nube.

He configurado lo siguiente donde esta el SQL Server:

1.- Administrador de orígenes de datos ODBC, DSN de sistema, Agregar SQL Server.
2.- He configurado el DSN como: Nombre: servidorsql Servidor: SQL_SERVER\SQLEXPRESS
3.- He creado un usuario en SQL Server, configurado para acceder a la bbdd en cuestión.

En PHP estoy utilizando el siguiente código:

$connection = odbc_connect("Driver={SQL Server};Server=192.168.1.53;Database=bbddprueba;", "usuario1", "123456");

Es correcta la String de conexión?
Que valor tengo que poner en Driver y Server?
En Driver va esto o hay que poner el nombre que le hemos dado al crear el DSN de sistema?
En Server hay que poner la IP o el nombre del servidor?

Desde la Raspberry hago ping a la IP del SQL Server y obtengo respuesta, puedo probar conexión al SQL Server de otra forma?

El error que me da es este:

[unixODBC][Driver Manager]Data source name not found, and no default driver specified

Espero que me podais tirar un cable, no me deja dormir por las noches :loco:

JoJo_ReloadeD
22/01/2016, 10:04
Pq tiras desde odbc si php tiene soporte propio para sql server? De hecho el error que te devuelve es que en el odbc que tiene tu php parece que no hay soporte sql server. Yo tiraria por aqui:

http://php.net/manual/es/function.mssql-connect.php

Tambien que muchas veces tiramos del php base que viene en las distros y a veces no traen todo lo que necesitamos, si no, compilatelo tu, es muy sencillo.

Anarchy
22/01/2016, 10:47
**** PHP 7 y funciones obsoletas. Me voy a tener que poner otra vez al día con PHP.

faraday
22/01/2016, 11:16
Pq tiras desde odbc si php tiene soporte propio para sql server? De hecho el error que te devuelve es que en el odbc que tiene tu php parece que no hay soporte sql server. Yo tiraria por aqui:

http://php.net/manual/es/function.mssql-connect.php

Tambien que muchas veces tiramos del php base que viene en las distros y a veces no traen todo lo que necesitamos, si no, compilatelo tu, es muy sencillo.

Tengo que tener una configuración previa del SQL Server?

Estoy probando desde mssql_connect pero me devuelve error: "mssql_connect(): Unable to connect to server"
La cadena de conexión que he utilizado:

$ip = "SQL_SERVER\SQLEXPRESS";

// Connect to MSSQL
$link = mssql_connect($ip, "usuario1", "123456");

if ( !$link ) {

if ( function_exists('error_get_last') ) {
var_dump(error_get_last());
}

die('connection failed');
}

Disculparme si digo alguna barbaridad, pero en esto voy muy perdido

JoJo_ReloadeD
22/01/2016, 11:27
Mira que tengas el paquete de sql server para php instalado, en debians suele ser php-mssql, mira que las credenciales sean correctas, mira que el puerto de sql server este abierto (nmap ip_servidor -p puerto_sql_server)...

faraday
22/01/2016, 11:39
Ok, adjunto capturas de lo que me dices.
Credenciales son correctas, puedo conectarme con el SQL Management
El puerto ni idea de cual es.
He utilizado "nmap ip_servidor"

45882
45883

JoJo_ReloadeD
22/01/2016, 11:42
El sql server usa el 1433 por default, mira que este abierto.

Aiken
22/01/2016, 11:43
$ip = "SQL_SERVER\SQLEXPRESS";


prueba con la ip directamente por eliminar posibles problemas

$ip="192.168.1.53";

faraday
22/01/2016, 12:49
Muchas gracias JoJo_ReloadeD y Aiken, he podido solucionar el problema de conexión.

He configurado en el SQL Server Configuration Manager, SQL Server Network Configuration, TCP/IP, IP Adresses, IP y puerto.

Siguiendo el string de ejemplo $link = mssql_connect('ip_server' 'user', 'password');

Todo correcto, conectando a SQL Server 2005 desde PHP en Raspberry pi
:D:D:D:D