jueves, 13 de agosto de 2009
Reiniciar campo tipo identity para SQL Server
Lo hacemos con un comando DBCC:
DBCC CHECKIDENT (nombre_tabla, RESEED,0)
Solamente coloquen el nombre de la tabla y listo. Nos vemos.
jueves, 18 de junio de 2009
Nueva opción de conocimiento
lunes, 15 de junio de 2009
SQL Server Tips 002: Consultas ad-hoc como cadenas.
DECLARE @x AS VARCHAR(100)
DECLARE @y AS DATETIME
SELECT @y = GETDATE()
SELECT @x='SELECT CAST(''' + CAST(@y AS CHAR(10)) + ''' as CHAR(10))'
EXEC(@x)
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.
