Bienvenidos

Recuerda que tus comentarios son importantes y recuerda agradecer si te fue útil algun artículo publicado aquí.

L1f3 15 a D@nc3 Flo0r
Mostrando entradas con la etiqueta sql server. Mostrar todas las entradas
Mostrando entradas con la etiqueta sql server. Mostrar todas las entradas

jueves, 14 de febrero de 2019

Query para ver los objetos modificados en la base de datos

Para ver los objetos creados y/o modificados en una base de datos de SQL Server podemos utilizar el siguiente query:

declare @ano int
set @ano = 2019 
declare @mes int
set @mes = 01
select name, [type], [type_desc], create_date, modify_date
from sys.objects
where type not in ('SQ','D','F','IT','PK','S')
  and (year(modify_date) = @ano or year(create_date) = @ano)
  and (create_date <> modify_date or create_date = modify_date)
ORDER BY modify_date, [TYPE], [NAME]

En este caso estamos filtrando  por año y mes y estamos excluyendo algunos objetos.

Listado de objetos disponibles:

D :  DEFAULT_CONSTRAINT
F :  FOREIGN_KEY_CONSTRAINT
FN :  SQL_SCALAR_FUNCTION
IT :  INTERNAL_TABLE
P :  SQL_STORED_PROCEDURE
PK :  PRIMARY_KEY_CONSTRAINT
S :  SYSTEM_TABLE
SQ :  SERVICE_QUEUE
U :  USER_TABLE
V :  VIEW

jueves, 22 de diciembre de 2016

Log de correos enviados desde Database Mail

Visualizar el log de correos enviados desde el servicio de correos de SQL SERVER.

Para ver los correos enviados podemos usar el siguiente query. La parte del WHERE sería para ver solo los del día actual, asi que se puede eliminar si queremos ver todos los correos.

USE msdb ;  
GO  
  
SELECT     mailitem_id, 
    recipients, 
    copy_recipients, 
    blind_copy_recipients,
    [subject],
    body,
    send_request_date,
    send_request_user,
    sent_status,
    sent_date,
    last_mod_date
FROM  sysmail_allitems
WHERE convert(varchar, sent_date,101) = convert(varchar, getdate(),101)

GO

miércoles, 21 de diciembre de 2016

Secuencia numérica (Identity) en un query SELECT de sql server

Para retornar una secuencia numérica como un campo dentro de un SELECT de SQL Server podemos usar el siguiente código.
select ROW_NUMBER() OVER (ORDER BY fecha) as Sec,Nombre, Apellido, Fecha 
from usuarios
En el query anterior estamos creando un campo que no existe en la tabla llamado Sec donde se va a desplegar una secuencia numérica por cada fila que retorne la consulta.
Luego se esta mostrando el campo nombre, apellido y fecha de la tabla Usuarios

Resultado:

Sec Nombre Apellido Fecha
1 Juan Perez 10/10/2013
2 Laura Martinez 10/10/2013
3 Lucas Pena 7/7/2014
4 Maria Diaz 11/13/2014
5 Jose Castillo 12/1/2014

domingo, 27 de noviembre de 2016

Visualizar la descripción de las tablas y campos de una base de datos en SQL SERVER

Escribir la descripción de las tablas y los campos de una base de datos de SQL SERVER es una buena práctica y facilita el trabajo en el futuro cuando no recordemos exactamente lo que se guarda en cada lugar.

Además sirve para generar automáticamente la documentación de la base de datos. En otras palabras, las herramientas de documentación de bases de datos, buscan lo escrito en la descripción y automaticamente la pasan a la documentación,

Ejemplo que he utilizado de estas herramientas son: SQL Doc, ApexSqlDoc y DBDoc

Para visualizar rápidamente la descripción de las tablas y campos, podemos usar este query. Espero que les ayude.

SELECT      u.name + '.' + t.name AS [table],
            td.value AS [table_desc],
            c.name AS [column],
            cd.value AS [column_desc]
FROM        sysobjects t
INNER JOIN  sysusers u
    ON      u.uid = t.uid
LEFT OUTER JOIN sys.extended_properties td
    ON      td.major_id = t.id
    AND     td.minor_id = 0
    AND     td.name = 'MS_Description'
INNER JOIN  syscolumns c
    ON      c.id = t.id
LEFT OUTER JOIN sys.extended_properties cd
    ON      cd.major_id = c.id
    AND     cd.minor_id = c.colid
    AND     cd.name = 'MS_Description'
WHERE t.type = 'u'
ORDER BY    t.name, c.colorder


Fuente: http://stackoverflow.com/questions/887370/sql-server-extract-table-meta-data-description-fields-and-their-data-types

viernes, 11 de enero de 2013

SQL: Constraint para que un campo acepte solamente un rango de números determinado

Si queremos agregar un nivel mas de validación a la base de datos, tenemos la forma de hacerlo mediante los constraints.

Un ejemplo sería si queremos que en un campo específico que sea tipo integer, se guarden solamente números del 0 al 100, podemos usar el siguiente código en SQL SERVER.

Este constraint se crea en la tabla "Tabla1" y se llama "NombreConstraint" y se crea en la columna llamada "Columna1"

ALTER TABLE Tabla1
ADD CONSTRAINT NombreConstraint
CHECK (Columna1 BETWEEN 0 AND 100)

domingo, 23 de diciembre de 2012

Es posible crear un índice único en un campo que acepte NULL ??

Este es un tip bastante interesante que me llegó de un website al que estoy inscrito.

Es posible tener un indice único en un campo que acepte NULL ??
Pues la respuesta es SI! y se puede lograr de la siguiente manera...


USE [DBPRUEBA]
GO

CREATE TABLE [dbo].[tbl_prueba](
 [id] [int] 
) ON [PRIMARY]

GO

CREATE UNIQUE NONCLUSTERED INDEX UNCI_prueba
ON [dbo].[tbl_prueba](id)
WHERE id IS NOT NULL
GO
--=======================================
insert into [dbo].[tbl_prueba] values(1)--success
insert into [dbo].[tbl_prueba] values(2)--success
insert into [dbo].[tbl_prueba] values(NULL)--success
insert into [dbo].[tbl_prueba] values(NULL)--success
insert into [dbo].[tbl_prueba] values(2)--error [Cannot insert duplicate key row in object 'dbo.tbl_test' with unique index 'NCI_test'.]

GO
select * from [dbo].[tbl_prueba]

El truco esta en pasar la condición deseada en la creación del índice

Buen fin de semana!

lunes, 30 de abril de 2012

Obtener las bases de datos de un servidor de SQL SERVER

Para listar las bases de datos atachadas en un servidor de SQL SERVER se puede utilizar una de estas opciones:


EXEC sp_databases

EXEC sp_helpdb

EXEC sp_msForEachDB 'PRINT ''?'''

Cada una retorna las bases de datos del servidor con algunas informaciones de diferencia asi que podemos utilizar la que mas nos convenga