| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
sábado, 15 de junio de 2013
Mantente en contacto conmigo a través de LinkedIn
martes, 25 de diciembre de 2012
Revisa las fotos de Ivan Emanuel en Facebook.
|
domingo, 11 de diciembre de 2011
Análisis de dos bases de datos
Antecedentes
Se cuenta con dos bases que comparten estructuras comunes (Tablas, Stored procedures, triggers, etc). ambas bases de datos son utilizadas por la misma aplicación solo que en versiones distintas, de allí su diferencia. Se requiere analizar ambas bases de datos para poder sacar una relación de sus diferencias y realizar un empate de alguna de las estructuras.
Solución
Se desarrolló un Stored procedure que realiza un análisis desplegando dos conjuntos de resultados.
- Relación de estructuras con los siguientes atributos
- Contador: Identificador auto numérico de la tabla
- Tabla : Nombre del objeto de base de datos
- Esta en origen: Bandera señala si el objeto esta en la base de datos origen
- Esta en destino: Bandera señala si el objeto esta en la base de datos destino
- Cantidad de campos idéntica: La cantidad de atributos en ambos objetos es idéntica
- Calidad de campos idéntica: La calidad (Longitud, tipo de dato, manejo de nulos, idioma o COLLATE) de atributos en ambos objetos es idéntica
- Susceptible a analizar: Bandera que indica que la estructura u objeto origen difiere de su homóloga en la base de datos destino
- Detalle de las inconsistencias
- Tabla: Nombre de la tabla u objeto involucrada
- Orden: Identificador auto numérico de la tabla
- ColOrigen: Nombre de la columna o campo en la base de datos origen
- ColDestino: Nombre de la columna o campo en la base de datos destino
- Longitud distinta: La longitud del campo difiere de una base de datos a otra
- Null distinto: El manejo de nulos del campo difiere de una base de datos a otra
- Collate distinto: El idioma o COLLATE del campo difiere de una base de datos a otra
- Tipo de dato distinto: El tipo de dato del campo difiere de una base de datos a otra
- Campo no está en origen: El campo o atributo no esta en la base de datos origen
- Campo no esta en destino: El campo o atributo no esta en la base de datos destino
A continuación se anexa un ejemplo de ejecución:
Tanto el filtro como el tipo de objeto son campos que se pueden omitir. El primero dándole el valor de ‘%%’, el segundo simplemente dejando el valor vacío ‘’
lunes, 28 de noviembre de 2011
Problemas con Crystal Reports v8 (CR8) en Windows 7 de 64 bits (Win 7 x64)
Problemática
Se han suscitado en algunos proyectos en los que he estado involucrado diversos problemas relacionados a este tipo de instalación.
Como antecedentes y en específico, la aplicación es una Windows Application, esta desarrollada en VB NET (VS 2008) usando CR 8 con reportes que en su mayoría usan el controlador nativo de SQL server y su fuente de información en procedimientos almacenados (Stored procedures) desarrollador den T-SQL sobre la plataforma de base de datos SQL Server 2008.
La aplicación se ha instalado sobre diversos sistemas operativos(De 32 y 64 bits), que van desde Windows XP (Service pack 1), hasta Win 7.
La mayor cantidad de problemas han brotado sobre Windows vista y Windows 7 de 64 bits. El listado de problemas es tan extenso como variado y no será incluido explícitamente en esta publicación, pero por nombras las mas sobresalientes:
- Errores indeterminados en cuya descripción se nombre la palabra HRESULT.
- Errores nativos de Crystal Reports:
- 20599
- 20534
- 20537
- Errores de pre visualización:
- Se despliega el reporte en blanco
- Se intenta desplegar el reporte pero se queda inhibido (Pasmado)
- Se pre visualiza momentáneamente el reporte cerrándose fracciones de segundo después Efecto Blink (Parpadeo)
Recomendaciones
A continuación se listan las recomendaciones que me han llevado a solucionar la mayoría (Prácticamente la totalidad) de los errores reportados o detectados en este escenario:
- Lectura sucia masiva al inicio del procedimiento (SET TRANSACTION ISOLATION LEVEL READUNCOMMITTED)
- Conteo de filas apagado en procedimientos que arrojan mas de un resultado (SET NOCOUNT ON)
- Manejo explícito en tablas temporales de:
- Nulos
- Idioma (COLLATION)
- Tipo de dato
- Creación de tablas temporales explícitas [No crearlas al vuelo por medio de una consulta (INSERT - SELECT ó SELECT – INTO)]
- Manejo constante de la cantidad de atributos de salida, esto quiere decir que no cambie ni la cantidad, tipo o nombre de los atributos o campos de salida resultados del procedimiento.
- Entrar al menú inicio
- Seleccionar el acceso directo a la aplicación
- Dar clic derecho/ Propiedades
- Elegir en la pestaña de “Compatibilidad”
- Dar clic en el botón “Cambiar la configuración para todos los usuarios”
- En el agrupador “Modo de compatibilidad”, seleccionar “Ejecutar este programa en modo de compatibilidad” y seleccionar de la lista desplegable “Windows XP Service Pack 3”
- En el agrupador “Nivel de privilegio”, seleccionar “Ejecutar este programa como administrador” y dar clic en “Aceptar”
- Presionar nuevamente el comando “Aceptar” en el cuadro de dialogo de las propiedades
- Algunos problemas de pre visualización de reportes se solucionan Instalando CR8 completo en el cliente
Espero les sea de utilidad.
jueves, 24 de noviembre de 2011
¿Como se si el valor de un campo existe en todas las tablas que contengan dicho campo, si no se en cuantas tablas existe el campo? (Base de datos SQL 2008)
Problemática
Creo que la propia pregunta nos dice la problemática, pero voy a poner un ejemplo para clarificar las cosas de manera mas puntual.
Tenemos un ERP con un catálogo de artículos, en la base de datos se cuenta la tabla que sustenta el catálogo mas un sin fin de tablas de apoyo que albergan bitácoras, Kardex, ventas, facturas, etc., etc. dentro de dichas tablas existen relacionados artículos.
La relacione entre el catálogo de artículos y estas tablas esta establecida por la clava única de cara articulo que se almacena en el campo CveArt.
Nos solicitan encontrar dentro de la base de datos todos los lugares en los que el artículo con clave 777 se encuentra, y como no conocemos la totalidad de las tablas que contemplan este campo, y mucho menos si el artículo con clave 777 se encuentra allí.
Solución
Existen varias opciones para realizar esta búsqueda, algunas mas complejas que otras, yo les voy a proporcionar mi solución, la cual ya evaluarán ustedes si es compleja o no.
Primero descarguen de la siguiente liga un Stored procedure de mi autoría:
Stored procedure para buscar valores de campos en todas las tablas de una BD
A continuación anexo el ejemplo de ejecución para el caso de nuestro ejemplo:
EXEC PIRM_SelValCamTabla 'CveArt', 777
El resultado sería algo similar a lo siguiente
| Contador | Tabla | Registros |
| 1 | Kardex | 23747 |
| 2 | Ventas | 2110 |
| 3 | CatalogoArt | 1 |
| 4 | Rembolsos | 0 |
| 5 | Cancelaciones | 1 |
| 6 | Bitacora | 24171 |
| 7 | Devoluciones | 1 |
| 8 | Recibos | 0 |
En donde la primera columna (Contador) es un simple identificador interno de la tabla de paso utilizada para desplegar la información. La segunda es el nombre de la tabla y la tercer es la cantidad de registros encontrados en esa tabla que contienen el valor 777 para el campo CveArt
Espero les sea de utilidad.
Problema de páginas en blanco con IE9
Problemática
Después de instalar IE9 y tratar de navegar, las páginas se cargaban correctamente ya que al pasar el ratón por encima se visualizaba la ayuda contextual de todos los elementos y me permitía inclusive darles CLICK, mas sin embargo la página se quedaba en blanco.
Solución
·Cierra todas las sesiones del Internet Explorer.
· Entra al menú inicio
· Teclea Opciones de internet
· Presiona Enter
· CLICK en la pestaña Opciones Avanzadas
· Revisa que este seleccionada la opción Usar procesamiento por software en lugar de procesamiento por GPU, la cual esta dentro de la rama Gráficos acelerados
· CLICK OK
· Abre el Internet Explorer
Este TIP se obtuvo de la siguiente liga:
Solo fue traducido para su comodidad por un servidor y le agradezco mucho el consejo a
Steven de Microsoft Answers Support Engineer
jueves, 17 de noviembre de 2011
Error: The server could not load DCOM. (Microsoft SQL Server, Error: 7404)
Problemática
Al iniciar mi servidor de SQL server 2008 R2 me marcó el siguiente error:
The server could not load DCOM. (Microsoft SQL Server, Error: 7404)
ME deja entrar en aparente normalidad pero a la hora de querer restaurar una base de datos el error vuelve suceder y aunque me despliega el cuadro de dialogo correspondiente a la restauración, y me permite ir a buscar el archivo BAK para proceder con la misma, no me despliega el archivo en el listado por lo cual no puedo seleccionara para terminar con el proceso.
Solución
Se encendió el servicio del SQL Browser desde: Inicio/ Panel de control/ Herramientas administrativas/ Servicios/ SQL Server Browser. Además de configurarlo para que iniciara de manera automática
Espero les sea de utilidad.