viernes, diciembre 14, 2012

Archivo no existe?? :O

Era una instalación como cualquier otra, muchas veces anteriormente instale SQL Server 2008 R2 y no habia tenido problemas, pero esta iba a ser una excepcion.

Mientras instalaba un feo mensaje aparecio.

TITLE: Microsoft SQL Server 2008 R2 Setup
------------------------------
The following error has occurred:
Error reading from file D:\x64\setup\sql_engine_core_shared_msi\PFiles32\SqlServr\100\Tools\Binn\schemas\sqlservr\2004\SOAP\types\SqlTran\6ckmcwa9.xsd.  Verify that the file exists and that you can access it.
Click 'Retry' to retry the failed action, or click 'Cancel' to cancel this action and continue setup.
For help, click: http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=10.50.1600.1&EvtType=0xDF039760%25401201%25401

Estuve buscando en Internet y no encontre algo que me indicara que estaba ocurriendo, ningun articulo era claro. Habian mas casos que hacian referencias al archivo, es mas, encontre varios sitios de donde bajarlos, pero que estaba pasando?

Quizas el medio estaba malo?? Una forma de probarlo era copiando los archivos desde el dvd al equipo e intentar una instalacion usando las copias locales.

Durante la copia me dio error al copiar ese archivo... el DVD estaba malo, pero que paso? No lo tengo claro, el ISO esta ok antes de grabarlo, durante la grabacion quedo ese archivo corrupto y no solo en ese dvd sino que ambas copias que se hicieron, pero al extraer el iso directamente no tenia problemas, sera el largo del path??

La solucion, al expandir el iso tome el archivo faltante y lo copie en la ruta indicada de modo que se pudiera leer sin problemas en forma local, la instalacion por fin paso y quedo todo ok.

Saludos!

Isa

lunes, septiembre 24, 2012

Cambiando a DHCP usando Politicas de Dominio

Una de las actividades que me ha tocado realizar al migrar una red que usa IP fija a DHCP es el como realizar masivamente el cambio en las estaciones de trabajo. Cuando son pocas no hay problemas, un chico de soporte puede manualmente cambiarlas y listo, pero cuando son 100, 200 o mas estaciones esto podria consumir bastantes horas de soporte para realizarlo

Una de las formas mas simples es a traves de una politica de dominio, el cambio de configuracion de la tarjeta de red requiere provilegios de administración sobre el equipo y probablemente no todos los usuarios son administradores de su equipo.

La forma mas simple es a traves de un ejecutable (un bat por ejemplo) que colocamos en la carpeta NETLOGON y lo agregamos en la politica en el startup del equipo y acostumbro tambien agregarlo en el login del usuario. Luego linkeamos la politica en la OU correspondiente donde estan los equipos donde deseamos se desean cambiar, mucho cuidado de no incluir en esta OU a los servidores, asi que no se les ocurra linkearlo a la raiz del dominio o usar la politica default del dominio.

El bat que usaremos sera algo parecido a lo siguiente:

netsh interface ip set address "Conexi¢n de  rea local" dhcp
netsh interface ip set address "Conexión de área Local" dhcp
netsh interface ip set address "Conexion de area Local" dhcp
netsh interface ip set address "Local Area Connection" dhcp

netsh interface ip set dns "Conexi¢n de  rea local" dhcp
netsh interface ip set dns "Conexión de área Local" dhcp
netsh interface ip set dns "Conexion de area Local" dhcp
netsh interface ip set dns "Local Area Connection" dhcp


Wow!! que onda! por que tantas lineas??

Pues no todos los equipos tienen el mismo nombre en la interfaz de red, por lo que inclui TODOS los posibles nombres que habian entre las estaciones de trabajo. Para aquellas lineas en que trata de cambiar uno que no existe aparecera el siguiente mensaje.
El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos.

Una de las cosas que me hizo perder algo de tiempo fue el tema de los acentos, en las version español de Windows el nombre de la interfaz tiene acento y aunque en el archivo bat los veia bien al ejecutar el comando se veia mal como lo muestra la siguiente imagen.


La solucion usada?? bueno, ya lo vieron en la imagen anterior, editar en aquellas estaciones que se ve mal el archivo usando el comando edit y corregir el nombre de la interfaz.


No es una solución elegante pero si practica :)

Ahora a poner mas bonito en script.

Saludos!

Isha

domingo, abril 29, 2012

Quiero mis papitas!!! D:

Muchos de mis seguidores son parte de la comunidad donde juego y creo podran entender mi frustración y probablemente no el resto del artículo.

Como muchos juegos online gratuitos, si quieres tener algo mas que lo que te brinda el juego gratis necesitas invertir lo que llamamos dinero real para comprar una moneda intermedia que nos sirve para adquirir aquellos tan preciados bienes.

Este fin de semana era especial, no solo estaba la tienda con un 50% de descuento sino que ademas habian sets muy especiales que uno no podia dejar de adquirir, preparo mi tarjeta de credito, selecciono cargar papitas, selecciono medio de pago, coloco los datos de mi tarjeta y me sale el mensaje que todo esta ok.

Espero unos minutos que se hagan efectivos y nada :( espero un par de horas y nada, aun espero y solo digo: Quiero mis papitas!!! D:

Transacciones.

En el mundo de las bases de datos y un poco mas alla, existen lo que llamamos transacciones, cual es la idea de una transaccion, que si yo saco dinero de una cuenta, esta aparesca en la cuenta de destino y que no se pierda en el camino, para que una transaccion sea realmente tal debe cumplir con ciertas caracteristicas, por lo que decimos que las transacciones son "ACID".

A tomica (Atomicity). Una transaccion debe ser lo mas pequeña posible y realizar solo la transaccion, esta debe ser un todo o nada, si alguna parte de la transaccion falla, toda la transaccion falla, debe considerar cada punto en la transaccion, incluyendo fallas de comunicacion, cortes de energia, etc.

C onsistente (Consistency). Las transacciones comiensan con un estado valido de los datos y deben finalizar con un estado valido y no un estado intermedio, esto incluye validaciones, triggers , etc.

I ndependiente (Insolation). Una transaccion no debe ser afectada por otras transacciones, una vez que ella comenzo no puede ser cambiado el contexto de cuando comenzo.

D durables (Durability). Una vez que la transacción a terminado se debe asegurar que no se revertira, aunque ocurran errores como cortes de energia o fallas.

Algunas de estas caracteristicas las entrega la base de datos y otras es parte responsabilidad de quienes desarrollan la transacción.

Ahora a esperar que mis papitas aparescan, lastima que ya las tendre disponibles cuando no este el evento D:

Buena Caza!!

Isha

miércoles, abril 18, 2012

Y donde esta el Cluster??

Estaba pensando en un lindo articulo sobre SQL Server tranquilamente frente a mi linda note cuando recibo una llamada telefonica, un Exchange 2010 habia perdido el DAG y las bases de datos no montaban.

Ok, quizas sea un caso interesante asi que acepte el desafio y manos a la obra viendo de que se trataba.

Efectivamente las bases estaban abajo, el DAG a simple vista se veia ok, sin embargo no se podia editar ni hacer nada, el error enviado era que no podia contactar el servicio de cluster.

Bien, vamos a mirar como esta el cluster......

El cluster .....

:S

No hay Cluster! Desaparecio, Uups!

[PS] C:\Windows\system32>Get-DatabaseAvailabilityGroup -Identity  'DAG1' -Status

Error en una operación de Active Manager. Error en la operación de clúster. Error: Error en la API de clúster 'OpenByNames('nodo1.dominio.com', 'nodo2.dominio.com') failed for each server. Specific exceptions: 'Error en una operación de Active Manager.

Error en la operación de clúster. Error: Error en la API de clúster '"OpenCluster(nodo1.dominio.com) error con 0x6d9. Error: No hay más extremos disponibles desde el asignador de extremos"'.', 'Error en una operación de Active Manager.

Error en la operación de clúster. Error: Error en la API de clúster '"OpenCluster(nodo2.dominio.com) error con 0x6d9. Error: No hay más extremos disponibles desde el asignador de extremos"'.'.'.

    + CategoryInfo          : InvalidArgument: (:) [Get-DatabaseAvailabilityGroup], AmClusterApiException
    + FullyQualifiedErrorId : 62F1FD80,Microsoft.Exchange.Management.SystemConfigurationTasks.GetDatabaseAvailabilityGRoup


(Odio los mensajes en español, no entiendo nada!!)

He ahi la causa del problema, desaparecio el Cluster y el DAG seguia haciendo referencia a el, bueno, ya tenia la causa del problema, ahora a encontrar la solucion.

Comence a buscar por internet y no encontre nada relacionado con el tema, y si trato de recrear el cluster "a mano"?? mmm a buscar info de como hacerlo, nop, el cluster no existia en ninguno de los 2 nodos, el servicio estaba instalado, pero en ambos nodos estaba desabilitado, al habilitarlo y tratar de levantarlo enviaba error. Por supuesto al tratar de conectarse al cluster tambien enviaba error de RPC.

Habian algunos articulos muy buenos como Recover from a DAG member loss sin embargo no era el escenario, no se perdio un miembro, sino todo el cluster.

Conversando con un colega sobre las alternativas veiamos 2:

1) Guardar las bases de datos, Reinstalar con la opcion /m:RecoverServer y luego colocar las bases de datos.
2) Hacer otro DAG eliminando el actual y asociando las bases a ese nuevo DAG.

Despues de un rato viendo los pro y los contras de cada opcion nos inclinamos por la segunda, aunque no sabiamos con certeza como lo hariamos.

Antes de comenzar a trabajar con el Exchange en esa opcion intente crear un nuevo cluster con ambos nodos, seguro no lo iba a hechar a perder mas de lo que ya estaba, pero no me dejaba agregarlos por que decia que ya pertenecian a un cluster, asi que hice limpieza ejecutando el comando cluster node /force. Despues del comando intente crear el cluster con otro nombre y me dejo, lo elimine y volvi al problema.

Se crea el nuevo DAG y no podemos elegir ningun server para agregar, ya que estan asociados al otro DAG. Intente sacar un nodo y envia el error indicando problema de comunicacion con el servicio de cluster, sin embargo el mismo error me recomendaba una solucion, usar el parametro -ConfigurationOnly, al buscar informacion sobre el parametro me di cuenta que lo que hacia era cambiar la configuracion pero sin intentar conectarse al servicio de Cluster, por lo que saque del DAG antiguo el servidor que habia limpiado ya la configuracion del Cluster usando el siguiente comando PowerShell:

 Remove-DatabaseAvailabilityGroupServer –Identity DAG1 –MailboxServer NODO1 –ConfigurationOnly

Eso me permitio remover el Server del DAG y agregarlo al nuevo DAG, a continuación fui a cada una de las bases de datos revise las propiedades y guarde quedando asociadas al nuevo DAG, monto una y sube ok. Repito la operacion en el otro nodo ejecutando ambos comandos, el que limpia la configuracion de cluster del nodo2, saco del DAG antiguo el nodo2 y lo agrego al nuevo DAG.

Monto el resto de las bases de datos las cuales montaron sin problemas quedando el servicio ok, excepto una que me daba error MapiExceptionCallFailed: Unable to mount database. (hr=0x80004005, ec=-550) pero eso ya es otra historia :D

Saludos!!!

Isa

martes, febrero 28, 2012

Eliminando un exchange 2010 inexistente

Siempre me tocan problemas extraños .....

En esta ocasión se trato de un disaster recovery con un recovery mas dañino que el desastre.

Con un servidor exchange inexistente que necesitaba eliminar.

Opcion 1:
- Instalar un server con el mismo nombre que el inexistente
- Instalar exchange usando Setup /m:RecoverServer
- Desinstalar Exchange en forma limpia

Esta opcion tiene sus pro y sus contras, es mas limpio, es mas seguro, es la recomendada por microsoft, pero necesito otro server el cual no tenia.

Opcion 2:

Usando ADSI Edit conectarse a la particion de configuracion, navegar hasta CN=Configuration [domain] → CN=Services → CN=Microsoft Exchange → CN=[organization] → CN=Administrative Groups → CN=Servers y eliminar el server desaparecido.

Si era un mailbox, ir a CN=Configuration [domain] → CN=Services → CN=Microsoft Exchange → CN=[organization] → CN=Administrative Groups → CN=Databases y eliminar las bases de datos relacionadas a ese servidor.

Abrir Active Directory Users and Computers y eliminar de los grupos de seguridad de Exchange (Exchange Servers y Exchange Trusted Subsystem) el server inexistentes o mejor aun, eliminar el objeto computador, validar que tampoco exista en el DNS.

Espero que esto les ayude tan bien como me ayudo a mi.

Saludos!

Isa