jueves, 28 de mayo de 2009
Strategies for Partitioning Relational Data Warehouses in Microsoft SQL Server
Revísenlo vale la pena.
miércoles, 27 de mayo de 2009
Modelo de encripción de datos: SQL Server 2008 II Parte
Como veremos las nuevas características de SQL Server 2008 incluyen una muy importante, llamada Transparent Data Encryption la cual puede ser usada para encriptar dichos respaldos.
A continuación les mostraré como implementar una encripción para proteger los respaldos. Pero primero veamos que podemos consultar un registro en la base de datos:
BACKUP DATABASE AdventureWorks TO DISK = 'C:\AdventureBCK.bak' WITH INIT, STATS = 10
Modelo de encripción de datos: SQL Server 2008

martes, 26 de mayo de 2009
Temporary tables vs table variables

El considerar usar una u otra dependerá de las necesidades inmediatas, muchos echan por la borda las tablas temporales desde el primer momento, pero veremos que las cosas existen para cubrir una necesidad de información, que muchas veces es blanca y otras negra.
Cosas importantes a considerar:
- Al igual que una tabla temporal local, una variable table solo puede ser utilizada por la sesión que la creo, pero esta es más limitada ya que solo puede ser vista por el batch donde fue creada y una vez finalizado el batch es destruida automáticamente.
- Las variables table no contienen estadísticas como las tablas temporales, este uno de los factores más importantes a considerar, ya que sin estas estadísticas SQL Server no puede tomar una buena decisión a la hora de generar el plan de ejecución. Aunque esto puede dejar de ser importante si la cantidad de información que vamos a manejar es muy pequeña.
- Las tablas temporales debido a que usan estadísticas, generan recompilaciones, cosa que no pasa con las variables table.
- Los cambios realizados sobre una variable table, no son tomados en cuenta en las transacciones, por lo que si una operación es terminada a la mitad que involucre cambios a una variable table, el rollback no se lleva a cabo en la variable table.
- Las variables table, generan menos bloqueos y hacen menos uso del log de transacciones, pero existe una excepción, ya que no es posible hacer uso de un SELECT INTO en las variables table, por lo que en este caso cuando se inserta información en una variable table se realizan más operaciones en el log de transacciones que en una tabla temporal, que si puede hacer uso del SELECT INTO.
En resumen, cuando estemos utilizando pocos registros es mejor usar variables table, pero cuando vamos a hacer uso de muchos registros, primero debemos verificar que tipo de queries vamos a ejecutar, si son queries que no requieren de estadísticas se va a tener un mejor desempeño con las variables table, pero si los queries requieren de las estadísticas es mejor el uso de tablas temporales. Nos Vemos.
SQL Server Tips 001: ESTIMATEONLY option

Espero les guste este nuevo tipo de post que pienso agregar de hoy en adelante. s tratarán de tips cortos de desarrollo, administración, tunning, etc. que me sepa o encuentre en internet sobre SQL Server, ahí les va el primero:
Antes de ejecutar un DBCC asegúrate que tienes suficiente espacio en TEMPDB. Se puede usar la opción ESTIMATEONLY para conocer el espacio que vas a requerir al ejecutar un comando DBCC CHECKDB, DBCC CHECKTABLE, DBCC CHECKFILEGROUP y DBCC CHECKALLOC.