Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas
Mostrando entradas con la etiqueta servidor. Mostrar todas las entradas

Conectar a una BD mysql desde SQL SERVER con servidores vinculados

Escenario :


Tengo un servidor principal con SQL Server como manejador de base de datos. Adicionalmente, tengo un servidor Linux (con redhat) con un sistema en php que conecta a una base de datos MySQL  instalada en dicho terminal.  El problema : Necesito pasar información de SQL a Mysql de 2 a 4 veces por día.  ¿Como hago para pasar toda la información y que se mantenga en la capa de Datos ?. Después de varios días de investigación y de haber encontrado 3 posibles soluciones sin salir de la capa de datos ( freetds era una muy buena opción, ejecuciones con procesos en segundo plano bajo en cron de linux) , he optado por solucionar el problema con lo que me parece la manera mas elegante y certera. servidores vinculados.

¿Qué es un servidor vinculado?

Su nombre lo dice todo, agrego una BD externa al SQL y la hago accesible, con esto puedo hacer todo tipo de consultas tipo transac sql. 

EMPEZAMOS

1. Instala los driver que te permite manejar la base Mysql.  Entonces bajar el conector  ODBC para mysql

http://dev.mysql.com/downloads/connector/odbc/


2. Luego de instalarlo debemos configurarlo, creamos el odbc y lo configuramos:

Yo tengo el sql server 2005 :

Entra al "Panel de Control" y busca "Herramientas Administrativas". Entra en este y aparecerá "Orígenes de datosODBC".

Se abrirá la siguiente ventana. Busca el botón "Agregar".




Clic sobre Mysql ODBC 3.51 driver (que es lo que instalaste en el paso 1). Luego sobre finalizar.


Se abre el conector ODBC del MySQL. En este debes definir los parámetros de conexión a tu base de datos MySQL. Simplemente agrega el nombre de tu servidor, tu user y password. No olvides colocar el nombre de la conexión (DataSource Name). Lo vamos a usar en el Paso 3. Sugiero "MySQL_LINK".



3. Vincular Mysql con SQL Server 2005

En el  administrador corporativo del SQL Server 2005  buscas la opción "Objetos del servidor". Dentro existe una subcarpeta llamada "Servidores vinculados".

 

clic derecho sobre Servidores vinculados y buscamos la opción "Nuevo servidor vinculado".

 

Se abre la ventana "Nuevo servidor vinculado" y colocas los parámetros para conectarse con la base MySQL.

Marcas la opción "Otro origen de datos" . Debes colocar los siguientes parámetros.

Servidor vinculado : LINKED_MYSQL (coloca el nombre que desees)

Proveedor : Microsoft OLE DB Provider for ODBC Drivers.

Nombre del Producto : MySQL

Origen de datos : MySQL_LINK (Ojo: Este es el nombre del ODBC que creaste en el paso 2, colocale el que tu hayas colocado.)

Cadena de proveedor : ODBC:DSN=MySQL_LINK::Table=aaa (el valor aaa es una tabla de la base MySQL, coloca cualquiera de las tablas de tu base. DSN es el nombre del ODBC que creaste en el paso 2)

Catálogo : pyp1 (nombre de la base de datos a la cuál quieras conectarte)



Dentro de la misma ventana, clic en la ficha "Seguridad" para que establecer con que user y password nos vamos a conectar. Clic en "Se establecerán usando este contexto de seguridad" y colocamos el user y password. Luego clicen el botón "Aceptar". Eso es todo, ya tenemos vinculado nuestro servidor MySQL con SQL 2005.

 

4. Hacer  consultas SQL en el servidor vinculado.

Ubicación : En el servidor central donde esta la base SQL Server 2005

Vayamos a probar si podemos hacer consultas en MySQL.

Ejecutamos exec sp_Tables_Ex 'LINKED_MYSQL' (Devolvemos información acerca de las tablas de el servidor que hemos vinculado.LINKED_MYSQL es el nombre del servidor vinculado que hemos creado). Se deben mostrar las tablas del servidor vinculado.


 


Veamos algunos ejemplos de sentencias SQL con openquery.

¿Si quiero mostrar datos de las tablas?

select * from openquery (LINKED_MYSQL,'select * from aaa')

¿Si quiere eliminar los datos de un tabla?

Delete openquery (LINKED_MYSQL,'select * from aaa'). ¡Borramos todos los datos de la tabla 'aaa'!

¿Si quiero insertar datos en dicha tabla?

insert into openquery(LINKED_MYSQL,'select * FROM aaa')
(Field1, Field2,...)
SELECT Field1, Field2,...
FROM Tabla

¿Y para actualizar datos?

Update openquery(LINKED_MYSQL,'Select * from aaa') SET Cod_Ind = 7
WHERE Cod_Ind = 7.5


http://www.forosdelweb.com/f21/como-hacer-insert-liskserver-por-openquery-238208/







Entorno Apache 2.2, PHP 5.4 y SQL Server

Este tutorial explica como preparar un entorno de programación, sobre Windows 7, utilizando un servidor web Apache 2.2PHP 5.4 y el DBMS SQL Server 2008 utilizando los drivers sqlsrv.dll de Microsoft.

Considerando que el sistema operativo y el servidor de base de datos estan funcionando correctamente y éste último aceptando conexiones en red procedo a los siguientes pasos:

Instalando Apache 2.2

Primero hay que descargar el archivo de instalación desde el sitio oficial de Apache, en este caso utilizamos el archivo httpd-2.2.23-win32-x86-no_ssl.msi. Luego se procede a la instalación típica.
Para verificar que el servidor esta funcionando hay que ingresar a http://127.0.0.1 desde tu navegador preferido y verás el conocido It Works!.

Instalación de PHP 5.4

Nuevamente hay que descargar los archivos de instalación, en este caso un zip, desde la página oficial y utlizamos el denominado VC9 x86 Thread Safe.
Descomprimimos en nuestra PC el contenido, personalmente lo ubiqué en C:\PHP\

Carga de módulo en Apache

Luego de situar los archivos de PHP hay que realizar el enlace con Apache para que el servidor web utilice como manejador de archivos .php al intérprete. Para esto hay que editar el archivo httpd.conf situado en \el directorio de instalación\Apache2.2\conf y agregar las siguientes líneas en la sección LoadModule
1
2
3
LoadModule php5_module "c:/PHP/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
PHPIniDir "C:/PHP"
Luego hay que reiniciar el servidor web y ya tenemos funcionando PHP. Para corroborar la configuración se puede escribir la función phpinfo(); dentro de un archivo .php y ejecutarlo en el navegador.
Antes de continuar hay que ajustar la ruta al archivo de configuración php.ini, esto se hace renombrando el archivo php.ini-production a php.ini y reiniciar nuevamente el servidor.
Configuración de PHP luego de renombrar archivo php.ini

Configuración con MSSQL SERVER 2008

Para conectar PHP con SQL Server es necesario los drivers de conexión, en este caso utilizaremos los provistos por Microsoft. Cabe mencionar que existen otros como mssql soportado hasta versiones anteriores a PHP 5.4 y además era multiplataforma. En contraposición sqlsrv funciona sólo en plataformas Windows ya que utiliza SQL Native Client 12 que permite conectar hasta SQL Server 2012.
Primero hay que dercargar el siguiente archivo, al ejecutarlo se desempaqueta varios archivos .dll. Para la version Thread Safe de PHP copiamos los archivos php_sqlsrv_54_ts.dll y php_pdo_sqlsrv_54_ts.dll (revisar el SQLSRV_Readme.htm) y lo pegamos en el directorio de instalación de PHP en el directorio llamado \ext\.
Ahora hay que editar el archivo php.ini y añadir las siguientes líneas:
extension=php_sqlsrv_54_ts.dll
extension=php_pdo_sqlsrv_54_ts.dll
 Debes asegurarte que esté habilitada la opción extension_dir = C:\PHP\ext
Ahora hay que descargar el archivo SQL Native Cient 2012 según la arquitectura del sistema e instalarlo.
Por último reiniciar el servidor web y verificar nuevamente con la instrucción phpinfo() la carga de la extensión.
Configuración del driver sqlsrv sobre php

Prueba de conexión

Se puede realizar una prueba de conexión ejecutando el siguiente programa:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$db_usr = 'usuario';
$db_pass = 'pass';
$db_server = 'servidor';
$db_name = 'db';
 
$db_info = array('Database'=>$db_name, 'UID'=>$db_usr, 'PWD'=>$db_pass);
 
$db_link = sqlsrv_connect($db_server, $db_info);
 
if(!$db_link){
die( print_r( sqlsrv_errors(), true));
}
echo 'Conectado';
?>

CommentFB