martes, 31 de octubre de 2023
USO
En primer lugar tienes que ejecutar el script que esta al final de este artículo en la base de datos donde deseas crear este procedimiento.
Entonces, puedes ejecutar el procedimiento almacenado con la siguiente declaración:
EXEC sp_ObjectExplore 'Nombre_BasedeDatos.esquema.nombreTabla'
No es necesario proporcionar Nombre_BasedeDatos y el esquema (por ejemplo: dbo) cuando la tabla está en la misma base de datos que el procedimiento.
Si deseas métricas adicionales sobre la distribución de todas las variables numéricas, ejecútalo con el parámetro de @distribución=’yes’.
Leer más…
jueves, 19 de octubre de 2023
Tienes algunos problemas con SQL Server. De vez en cuando tienes períodos en los cuales incluso la ejecución de un simple SELECT demora más de un minuto. Durante este período, el uso de CPU y memoria en el servidor tienen una apariencia normal. Haz realizado algún control básico sobre el servidor utilizando el monitor de rendimiento, pero con esto no se ha descubierto nada y ya no tienes más ideas. ¿Cuál sería el siguiente paso en el diagnóstico del problema?
Te pones a revisar los procesos que están corriendo en el servidor SQL Server y ves que la mayoría tiene un tipo de espera CXPACKET.
Leer más…
sábado, 14 de octubre de 2023
Con lo años he tenido algunos de los mas extraños y complejos requerimientos de consultas y reportes que te puedas imaginar.
Los más dificiles suelen implicar algun tipo de regla de negocio extraña o requerimiento que incluyen parametros de fechas, logica, rangos, etc. He puesto este código junto con el fin de precalcular muchos elementos de fechas caracterizadas y ser capaz de determinar rapidamente varios valores y caracteristicas de las fechas sin necesidad de romperce la cabeza cada vez que las cosas se ponen dificiles.
Leer más…
jueves, 5 de octubre de 2023
He encontrado algo interesante, si alguna vez deseas enviar varios informes o archivos utilizando sp_send_dbmail.
Tienes que establecer primero la ROWCOUNT en 0 (cero).
No puede haber un espacio después del punto y coma que separa la ruta completa de los informes.
SET ROWCOUNT 0
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Your_Server_Profile',
@recipients = 'recipient.1@xyz.com; recipient.2@xyz.com',
@body = 'Reports 1 and 2 are attached',
@file_attachments = 'C:\Report Folder\Report1.TXT;C:\Report Folder\Report2.TXT',
@subject = 'Reports 1 and 2 are attached' ;
Espero sea de utilidad!.
viernes, 29 de septiembre de 2023
SET y SELECT pueden ser usados para asignar valores a las variables a través de T-SQL. Ambos cumplen su tarea, pero en algunos casos se pueden producir resultados inesperados. En este artículo menciono detalles sobre las consideraciones para elegir entre los métodos SET y SELECT al asignar un valor a una variable.
En la mayoría de los casos SET y SELECT pueden ser utilizados alternativamente sin ningún efecto.
Leer más…
domingo, 17 de septiembre de 2023

Te ha sucedió que estas realizando algún proceso sobre una base de datos y por circunstancias casuales el servidor termina reiniciándose. Todo está normal hasta que te das cuenta que tu base de datos sigue por un buen tiempo en el estado «en recuperación», y cuando intentas realizar cualquier operación ocurren bloqueos o bien te arroja el siguiente error:
Check statement aborted. Database contains deferred transactions.
¿Qué podemos hacer para solucionar este problema?
Leer más…
viernes, 15 de septiembre de 2023
Cuando tienes servidores SQL Server con la configuración de intercalación diferente, tus bases de datos pueden ser diferentes en estos servidores, cuando no se especifique la intercalación de manera explícita. Para solucionar esto, es necesario modificar todos los campos con una secuencia de intercalación diferente. Tienes que hacer esto manualmente, mediante la apertura de cada tabla en el Administrador corporativo del SQL, revisar cada columna, y cambiar la secuencia de intercalación. Es innecesario decir que esta es una tarea tediosa.
Leer más…
viernes, 8 de septiembre de 2023
Tienes idea!. Las operaciones con variables de tablas no se pueden deshacer. Solo llenando tu log desde la variable de tabla puedes llenar hasta que punto se quedo tu transaccion. Por su puesto, tienes que recordar, que todas las entradas que preceden en el log al error fueron deshechas (rollbak). Si corriges el error de tiempo de ejecucion en la linea 26, la transaccion es confirmada (commit) y la vida continua.
Leer más…
sábado, 2 de septiembre de 2023
Digamos que deseas esperar durante 10 segundos o hasta un determinado momento antes de proseguir adelante en un script. Este es el Transact SQL a utilizar:
WAITFOR Delay '000: 00:10 '
lunes, 17 de julio de 2023
Este truco es parecido tanto a la función RAND () como a la función NEWID(). Ambos métodos son útiles, pero un problema con estos, es que dependiendo de cómo los usas puedes terminar leyendo toda la tabla entera para conseguir una distribución aleatoria de los datos. Lo bueno de esto es que estás casi seguro de que obtendrás un conjunto de registros totalmente aleatorio cada vez. Debido a la potencial sobrecarga con la lectura a través de toda la tabla ¿Existen otros métodos para recuperar datos de forma aleatoria?
Leer más…