martes, 12 de julio de 2011

Consultas Distribuidas I - Habilitar el MSDTC en XP para SQL Server

Siempre lo mismo, resuelvo alguna tarea complicadísima y no la documento como es debido, pasa el tiempo y se da el mismo escenario en otro cliente y.... CHAN!!! No me acuerdo como lo había resuelto!!!! (Vale aclarar, debido a éstas cuestiones fue que nació éste blog)
Pues bien, eso mismo me volvió a pasar hace unos días así que (como ya tengo mi ayuda memoria "on web") comparto, para los usuarios hispanoparlantes el paso a paso de una de las tareas más "rompecocos" con las que me toco lidiar:
Hacer consultas DML distribuidas entre servidores MS SQL 2000
Estas, como algunos sabrán, son los SELECT, INSERT, UPDATE O DELETE con JOIN en donde una (o más) de las tablas combinadas pertenecen a distintos servidores (uno el local y los otros remotos). Por ej. "Si quisieramos consultar todos los registros que no existen de una tabla x del servidor remoto en la misma tabla x pero del servidor local" escribiriamos los siguiente:
SELECT * 
FROM [SERVIDOR_REMOTO].[DB_REMOTA].[dbo].Tabla_X TablaRemota_X
WHERE NOT EXISTS (
   SELECT *
   FROM Tabla_X TablaLocal_X
   WHERE Tabla_X.Id = TablaRemota.Id)
GO
Este escenario se podría dar en un ambiente de replica de SQL Server (de hecho es una de las consultas que estaba haciendo hace un rato). Si quisieramos ejecutar esta consulta el motor nos daría el siguiente error:

Iniciamos en el "Administrador de SQL Server" el servicio de "Coordinador de Transacciones distribuidas" o (MSDTC) y, si queremos, tildamos para que se ejecute al iniciar con el sistema operativo.
Al hacer ésto nos puede aparecer el siguiente mensaje de error:
Error 1068: no se puede iniciar el servicio o grupo de dependencia.
Si luego de iniciado el MSDTC nos da la siguiente pantalla de error al ejecutar nuestra consulta a un servidor linkeado:
"[OLE/DB provider returned message: No se puede dar de alta la nueva transacción en el coordinador de transacciones especificado. ]
Traza de error de OLE DB [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d00a].
No se puede realizar la operación. El proveedor OLE DB 'SQLOLEDB' no pudo iniciar una transacción distribuida." y blablablabla
Hay que habilitar un par de cosillas en el MSDTC:
Vamos a inicio --> ejecutar y escribir DCOMCNFG y apretamos Enter.
Se abre el administrador de "Servicios de Componentes": Hacemos click en el ícono "Servicios de Componentes", luego en la carpetita "Equipos" y, en el ícono "Mi PC", hacemos click con el control derecho y nos dirigimos a "propiedades". Una vez dentro de la ventana de propiedades tildamos la pestaña MSDTC y apretamos el botón "Configuración de seguridad..." y tildamos "Acceso a DTC desde la red", "Permitir clientes remotos", "Permitir administracion remota", "permitir entrantes" y "permitir salientes" y "no se requiere autenticación"
Luego de aceptar todo, reiniciamos los servicios del SQL Server Y ahí debería ya funcionar nuestra consulta LDM (SELECT, INSERT, UPDATE o DELETE) distribuida.

viernes, 22 de abril de 2011

Oracle anuncia "Java Magazine", una revista online sobre Java gratuita

Este lunes Oracle anunció Java Magazine, una revista online sobre Java gratuita. La revista todavía no ha publicado ningún número, y el primero no aparecerá hasta finales de julio. A partir de entonces será una revista bimensual electrónica gratuita que, según Oracle, será "una esencial fuente de conocimiento sobre la tecnología Java".


La revista no estará disponible abiertamente online, sino que requerirá registro (gratuito) para poder acceder a los números. En el registro se os despedirá bastante información personal (más de la que al menos yo considero razonable). Aunque el primer número no estará disponible hasta julio, el registro ya se ha abierto.

Fuente: JavaHispano

miércoles, 16 de marzo de 2011

Cambiar de Plataforma de Destino en Visual Studio sobre .NET CF

Uffff!!! Tarde tanto en hacer algo esta mañana y era una pavada. Dios!! Mi memoria falla cada día más!!!

Volví a trabajar con el .NET Compact Framework. Abrí mi Visual Studio y elegí el proyecto con el cual quería trabajar. Hasta aquí todo bien.
Lo que necesitaba hacer era probar un emulador de un dispositivo movil que tenía instalado pero no era el que estaba predeterminado al abrir el proyecto y el el cual me mostraba en el entorno del VS al inicio.


Al querer cambiar de plataforma desplegando la ventanita solo me mostraba el dispositivo que se ve en la figura. No acá no era...

- "A ver... Era acá?" - Me dije, haciendo click en el icono resaltado de la figura a continuación...


- "Ah!! Creo que acá era!!" - Afirmé, incrédulo, al abrirse la ventana de opciones y mostrar los dispositivos instalados para la plataforma:


Al elegir Pocket PC 2003 y aceptar miré, para mi sorpresa que no me cambiaba al dispositivo en el menú principal. Entonces?!?!? Cómo era?!?!?

Después de hurguetear en el ayuda un rato, encontré que hay que ir al menú "Proyecto" --> "Cambiar plataforma de destino..." y ahí si, indicarle con cual plataforma queremos trabajar:



Nos preguntá si deseamos cerrar y volver a abrir el proyecto para que pueda cambiar de plataforma...


Le decimos que si y listo, problema resuelto.