Mostrando las entradas con la etiqueta SQL Server. Mostrar todas las entradas
Mostrando las entradas con la etiqueta SQL Server. Mostrar todas las entradas

25 oct 2018

Integridad de los datos en SQL Server con CHECKSUM

Uno de los requerimientos importantes son la integridad de los datos, es necesario garantizar que ciertos datos queden fijos después de algún proceso y solo se pueden modificar mediante permisos especiales o un proceso determinado.

Es posible detectar si cambian los datos incluso por un programador que tiene acceso a línea de comandos para escribir sentencias Transact SQL usando la función CHECKSUM de SQL Server. La función CHECKSUM de SQL server devuelve un valor (hash) resultado de aplicar un algoritmo a los datos especificados (columnas). Entonces, basta calcular el CHECKSUM de las columnas que se desea validar que no sean alteradas y posteriormente comparar el valor de esta columna con el nuevo calculo del CHECKSUM, si estos son diferentes significa que fueron alterados.

El video que muestro a continuación da un ejemplo puntual del uso de esta función:





* SQL Server sugiere usar la función HASHBYTES para disminuir la probabilidad de colisión (dos datos distintos dan por resultado el mismo valor hash). En lo particular prefiero CHECKSUM por su facilidad de manejo de valor regresado, el cual es un int, mientras que HASHBYTES regresa un varbinary. Además de que no es importante si existe alguna colisión en los CHECKSUM devueltos. Considerar que el tipo int de Transact es un entero de 4 bytes, el cual tiene un rango de -2^31 a 2^31, esto significa un rango de +4 mil millones de combinaciones, lo cual es bastante bueno.

Optimizando para velocidad con las relaciones uno a uno

Debo aclarar que las relaciones uno a uno, no son una forma 'normal', esto significa que durante un proceso de normalización deberían desaparecer las relaciones uno a uno... excepto cuando se 'desnormaliza' conscientemente por asi convenir, como es este caso.


Problema: Tengo una aplicación de ventas, donde en últimos tiempos el proceso de seleccionar las facturas pendientes de pago se ralentizo considerablemente, llegando hasta un par de minutos. Este proceso consta de una simple consulta de la forma:


Select IDVenta, Fecha, NoDoc, NoDoc, Saldo, Total From TbaVenta Where  (IDCliente=12345) And ((TipoDoc='F') Or (TipoDoc='R') Or (TipoDoc='N') ) And (Afecto<>0) And (Saldo>0)

Esto es, selecciona todas las facturas del cliente 12345 que son Facturas, Remisiones o Notas afectadas y que tiene Saldo.


La columna IDSaldo de la tabla TbaVenta esta indexada, no así las columnas TipoDoc, Afecto y Saldo


En un análisis superficial supuse que si indexaba la columna Saldo el rendimiento mejoraría y asi fue, bajando de 100 hasta 5 segs en mi servidor de pruebas. No conforme con eso busque una alternativa y recurri a un viejo truco... una relación uno a uno, logrando reducir a casi 1/3 del tiempo de ejecución respecto al proceso de indexación anterior, como lo muestro en el video siguiente:






Y aquí tenemos una razón para usar una relación uno a uno!

5 nov 2014

Bases Distribuidas con SQL Server 2012

Estamos en la recta final de este año 2014 y ha sido de muchas ocupaciones, sin embargo estoy haciendo un esfuerzo por avanzar con el contenido del libro: "Bases de Datos Distribuidas con SQL Server 2012", el cual pretende ser un curso multimedia (Libro+Videos+Certificacion) con el fin de ser el material que acompañe la materia de "Bases de Datos Distribuidas" que se imparte en la mayoria de las universidades para la Carrera de Ing. en Sistemas y afines o para cualquiera que quiera profundizar en la arquitectura distribuida y reafirmar conocimientos generales de bases de datos.


Ya existe un borrador descargable desde hace un año con los primeros 3 capitulos y se puede descargar desde
http://es.slideshare.net/AntonioOrtiz1/curso-bases-de-datos-distribuidas-con-sql-server-2012

Ademas de ser un material de referencia para bases de datos distribuidas, este curso pretende ser una ayuda para reafirmar los conceptos mas importantes del modelo relacional y en general de bases de datos, asi como de alguna funcionalidad de SQL Server.
Anexo el contenido del curso, el cual es possible que cambie mientras se elabora:
BASES DE DATOS DISTRIBUIDAS CON SQL SERVER 2012

Dirigido a: Programadores, Analistas de Sistemas, Administradores de Sistemas, Estudiantes y Profesores que deseen aprender a diseñar e implementar un modelo de base de datos distribuida.
Deseable: Conocimientos de bases de datos, SQL.
Requisitos: Haber cursado o cursar alguna carrera relacionada a la informática o tener conocimientos basicos en bases de datos.
CONTENIDO:
I. Introducción al modelo relacional
  • De Sequel a SQL Server
  • Bases de Datos Relacionales
  • Manejadores de Bases de Datos Relacionales
  •  SQL
  •  Arquitectura Cliente-Servidor
  
II. Instalación y Configuración de SQL Server 
  • Instalación Manual
  • Configuración de Instancias
  • Administrador de Configuración (Configuration Manager)
III. Administración de SQL Server
  • SQL Server Management Studio
  • Separar y Adjuntar bases de datos
  • Respaldos
  • Compactar
  • Importar Datos
IV. Diseño de Bases de Datos
  • Diseño Conceptual
  • Diseño Lógico
  • Diseño Físico
  • Modelo relacional
  • Modelos E-R
  • Normalización
 V. Arquitectura de SQL Server
  • Archivos de datos
  • Archivo de transacciones
  • Grupos de archivos
  • Páginas de Datos
  • Índices Clustered
  • Índices Non clustered
VI. Transact SQL
  • Diagramas
  • DDL
  • Consultas
  • SubConsultas
VII. Vistas
  • Vistas
  • Vistas Indexadas
VIII Bases de Datos Distribuidas
  • Descripción
  • Características de una base de datos distribuidas
  • Ventajas
  • Desventajas
  • Creando un modelo de base de datos distribuidas

IX. Consultas Distribuidas
  • Servidores vinculados
  • Consultas distribuidas
  • Transacciones Distribuidas

X. Procedimientos Almacenados (Stored Procedures) y Funciones
  • Procedimientos del Sistema
  • Procedimientos del Usuario
  • Funciones del Sistema
  • Funciones del Usuario
  • SQL Dinámico vs Procedimientos Almacenados
XI. Desencadenadores (Triggers)

XII. Replicación
  • Publicador
  • Suscriptor
  • Réplica de instantáneas
  • Réplica transaccional
  • Replicación de Mezcla

4 jun 2013

Reparar base de datos SQL Server 2005 o posterior

En algunas ocasiones las base de datos se dañan con fallas de hardware, apagones inesperados del servidor y transacciones interrumpidas incorrectamente. SQL Server provee de sentencias que permiten verificar y reparar una base de datos con inconsistencias o dañada.

Antes de realizar el siguiente procedimiento deberia realizar un respaldo de la base de datos dañada si lo permite SQL Server o hacer una copia física de los archivos.


Paso 1: se coloca la base de datos en modo emergencia y usuario único
Alter Database mibd SET SINGLE_USER
Alter Database mibd SET EMERGENCY


Paso 2: Reparar la base datos
DBCC CHECKDB('mibd', REPAIR_ALLOW_DATA_LOSS)

. Repita este paso hasta que el mensaje sea '0 errores encontrados' para la base de datos
. La sentecia CHECKDB con la opcion REPAIR_ALLOW_DATA_LOSS elimina datos de ser necesario para realizar la reparación o corregir la consistencia de los datos, para una reparación más rápida y sin pérdida de datos pruebe la opcion REPAIR_REBUILD, aunque en ocasiones con esta opción no se repara completamente la base de datos.


Paso 3: Regresar a multiusuario y colocar en linea la base de datos
Alter Database mibd SET ONLINE
Alter Database mibd SET MULTI_USER


Aunque esto permite recuperar la base de datos en la mayoría de los casos, es altamente recomendable tener una estrategia correcta de respaldo o recuperación de la base de datos tales como espejos de discos, servidor reflejado, recuperación completa, etc.

24 sept 2012

Conferencias en CETIS 100 Tepic

Este martes 25 y Jueves 27 fui invitado al Centro de Estudios Tecnologicos y de Servicios No. 100, lugar donde hice mis estudios de preparatoria y mi carrera como tecnico programador para dar una serie de conferencias a los alumnos de Administracion e Informatica,

El tema para el area de informatica sera "Bases de Datos con SQL Server 2008", donde se mostraran las facilidades que proporciona Microsoft SQL Server 2008 para la administracion de bases de datos y se realizara una pequeña demostracion de su potencia.


Para el area de administracion impartire la conferencia: "Software Administrativo para la PYME"; una conferencia donde se explica la diferencia entre un sistema 'punto de venta', 'administrativo' y ERP. Se mostrará el software que fabricamos en mi empresa de tipo administrativo, llamado: "VISUAL CAJA 3D x2".

27 mar 2012

DIPLOMADO: BASES DE DATOS DISTRIBUIDAS CON SQL SERVER 2008


Invitacion abierta al diplomado presencial que impartiré proximamente en el Conalep 169 Tepic, haciendo enfasis en la aplicacion practica de la arquitectura de bases de datos distribuidas.

Dirigido a: Programadores, Analistas de Sistemas, Administradores de sistemas, Estudiantes y Profesores que deseen aprender a diseñar e implementar un modelo de base de datos distribuida.

Requisitos: Haber cursado alguna carrera relacionada a la informática y/o tener experiencia en bases de datos.

Deseable: Conocimientos de bases de datos, Transact SQL o ANSI SQL.

Objetivo
Durante este diplomado se revisara la teoría de base de datos distribuidas y se mostrarán las capacidades de SQL Server 2008 que permiten realizar una implementación exitosa de un esquema de base de datos distribuida.
Duración: 200 hrs.
Sede: CONALEP 169 Tepic, Mexico.
Fecha Inicio: Sábado 26 de Mayo de 2012
Clases demo: Sábado 12 y 19 de Mayo de 2012
Fecha de Finalizacion: Octubre de 2012 (aprox.)

Documento: DIPLOMA 200 hrs
Costo: 6000 pesos x persona (diferido durante todo el periodo del curso)
Teléfono: (311) 2103618
Enviar correo: Enviar mensaje aquí


Les comparto un video con una explicacion de bases de datos distribuidas




Poster informativo del diplomado