Personal WebSite of Leonardo Sasso

Pagina Personal de Leonardo Sasso
Busqueda de Textos en DB avanzada PDF Imprimir E-mail
Articulos - SQL
  
Viernes, 02 de Octubre de 2009 10:04

SELECT DISTINCT o.name AS ObjectName,

CASE o.xtype

WHEN 'C' THEN 'CHECK constraint'

WHEN 'D' THEN 'Default or DEFAULT constraint'

WHEN 'F' THEN 'FOREIGN KEY constraint'

WHEN 'FN' THEN 'Scalar function'

WHEN 'IF' THEN 'In-lined table-function'

WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraint'

WHEN 'L' THEN 'Log'

WHEN 'P' THEN 'Stored procedure'

WHEN 'R' THEN 'Rule'

WHEN 'RF' THEN 'Replication filter stored procedure'

WHEN 'S' THEN 'System table'

WHEN 'TF' THEN 'Table function'

WHEN 'TR' THEN 'Trigger'

WHEN 'U' THEN 'User table'

WHEN 'V' THEN 'View'

WHEN 'X' THEN 'Extended stored procedure'

ELSE o.xtype

END AS ObjectType,

ISNULL( p.Name, '[db]') AS Location

FROM syscomments c

INNER JOIN sysobjects o ON c.id=o.id

LEFT JOIN sysobjects p ON o.Parent_obj=p.id

WHERE c.text LIKE '%LJS_COD%'

ORDER BY Location, ObjectName
Actualizado ( Viernes, 02 de Octubre de 2009 10:07 )
 
Manejo de Errores en SQL 2005 PDF Imprimir E-mail
Articulos - SQL
  
Jueves, 06 de Agosto de 2009 11:52

Control de errores en Transact SQL

Uso de TRY CATCH

     A partIr de la versión 2005, SQL Server proporciona el control de errores a través de las instrucciónes TRY y CATCH.

    Estas nuevas instrucciones suponen un gran paso adelante en el control de errores en SQL Server, un tanto precario en las versiones anteriores.

    La sintaxis de TRY CATCH es la siguiente:

    
    BEGIN TRY
        ...
    END TRY
    BEGIN CATCH
        ...
    END CATCH

    El siguiente ejemplo ilustra el uso de TRY - CATCH.


 BEGIN TRY

   DECLARE @divisor int ,

   @dividendo int,

   @resultado int


   SET @dividendo = 100

   SET @divisor = 0

   -- Esta linea provoca un error de division por 0
   SET @resultado = @dividendo/@divisor
   PRINT 'No hay error'
 END TRY
 BEGIN CATCH
   PRINT 'Se ha producido un error'
 END CATCH

Funciones especiales de Error

    Las funciones especiales de error,están disponibles únicamente en el bloque CATCH para la obtención de información detallada del error.

    Son:

  • ERROR_NUMBER(), devuelve el número de error.
  • ERROR_SEVERITY(), devuelve la severidad del error.
  • ERROR_STATE(), devuelve el estado del error.
  • ERROR_PROCEDURE(), devuelve el nombre del procedimiento almacenado que ha provocado el error.
  • ERROR_LINE(), devuelve el número de línea en el que se ha producido el error.
  • ERROR_MESSAGE(), devuelve el mensaje de error.

    Son extremadamente útiles para realizar una auditoría de errores.


 BEGIN TRY

   DECLARE @divisor int ,

   @dividendo int,

   @resultado int


   SET @dividendo = 100

   SET @divisor = 0

   -- Esta linea provoca un error de division por 0
   SET @resultado = @dividendo/@divisor
   PRINT 'No hay error'
 END TRY
 BEGIN CATCH
   PRINT ERROR_NUMBER()
     PRINT ERROR_SEVERITY()   
     PRINT ERROR_STATE() 
     PRINT ERROR_PROCEDURE()  
     PRINT ERROR_LINE()  
     PRINT ERROR_MESSAGE() 
 END CATCH

    Lógicamente, podemos utilizar estas funciones para almacenar esta información en una tabla de la base de datos y registrar todos los errores que se produzcan.

La variable de sistema @@ERROR

    En versiones anteriores a SQL Server 2005, no estaban disponibles las instrucciones TRY CATCH. En estas versiones se controlaban los errores utilizando la variable global de sistema @@ERROR, que almacena el número de error producido por la última sentencia Transact SQL ejecutada.


 DECLARE @divisor int ,
   @dividendo int ,
    @resultado int

 SET @dividendo = 100
 SET @divisor = 0
 -- Esta linea provoca un error de division por 0
 SET @resultado = @dividendo/@divisor
 
 IF @@ERROR = 0
     BEGIN
         PRINT 'No hay error'
     END
 ELSE
     BEGIN        
      PRINT 'Hay error'  
  END

    El uso de @@ERROR para controlar errores puede provocar multitud de problemas. Uno de los más habituales es sin duda, incluir una nueva sentencia Transact SQL entre la línea que provoco el error y la que lo controla. Esa nueva instrucción restaura el valor de @@ERROR y no controlaremos el error.

    El siguiente ejemplo ilustra esta situación:


 DECLARE @divisor int ,
   @dividendo int ,
    @resultado int

 SET @dividendo = 100
 SET @divisor = 0
 -- Esta linea provoca un error de division por 0
 SET @resultado = @dividendo/@divisor
 PRINT 'Controlando el error ...' -- Esta linea estable @@ERROR a cero
 IF @@ERROR = 0
     BEGIN
-- Se ejecuta esta parte!
         PRINT 'No hay error'
     END
 ELSE
     BEGIN        
      PRINT 'Hay error'  
  END

Generar un error con RAISERROR

    En ocasiones es necesario provocar voluntariamente un error, por ejemplo nos puede interesas que se genere un error cuando los datos incumplen una regla de negocio.

    Podemos provocar un error en tiempo de ejecución a través de la función RAISERROR.


 DECLARE @tipo int,
         @clasificacion int
 
 SET @tipo = 1
 SET @clasificacion = 3
 IF (@tipo = 1 AND @clasificacion = 3)
 BEGIN
    RAISERROR ('El tipo no puede valer uno y la clasificacion 3',
16, -- Severidad
1 -- Estado
)
 END

    La función RAISERROR recibe tres parámetros, el mensaje del error (o código de error predefinido), la severidad y el estado.

    La severidad indica el grado de criticidad del error. Admite valores de 0 al 25, pero solo podemos asignar valores del 0 al 18. Los errores el 20 al 25 son considerados fatales por el sistema, y cerraran la conexion que ejecuta el comando RAISERROR. Para asignar valores del 19 al 25 necesitares ser miembros de la función de SQL Server sysadmin.

    El estado es un valor para permitir que el programador identifique el mismo error desde diferentes partes del código. Admite valores entre 1 y 127, permite tratar .


Fuente: http://www.devjoker.com/contenidos/Tutorial-de-Transact-SQL/255/Control-de-errores-en-Transact-SQL.aspx
Actualizado ( Jueves, 06 de Agosto de 2009 12:02 )
 
Ver las columnas de una Tabla o DB PDF Imprimir E-mail
Articulos - SQL
  
Martes, 28 de Julio de 2009 14:13

Por medio del siguiente script podremos obtener informacion de una determinada tabla.

Declare @Tabla varchar(64)

set @Tabla = 'LOTE'

select scol.name as Nombre_Campo, stype.name as Tipo, scol.length as Longitud, scol.isnullable as Nulo, scol.colstat as Estado_Columna
from sysobjects sobj
inner join syscolumns scol on sobj.id = scol.id
inner join systypes stype on scol.xtype = stype.xtype
where sobj.xtype = 'U' and sobj.name=@tabla
order by sobj.name, scol.colOrder

Modificando un poco el codigo este script nos puede ser util por ejempo cuando necesitamos buscar el nombre de una columna en una db sin conocer la tabla a la cual pertenece

select scol.name as Nombre_Campo, stype.name as Tipo, scol.length as Longitud, scol.isnullable as Nulo, scol.colstat as Estado_Columna
from sysobjects sobj
inner join syscolumns scol on sobj.id = scol.id
inner join systypes stype on scol.xtype = stype.xtype
where sobj.xtype = 'U'
order by sobj.name, scol.colOrder

Actualizado ( Lunes, 02 de Noviembre de 2009 22:56 )
 
Buscar Donde se usa una columna en una DB PDF Imprimir E-mail
Articulos - SQL
  
Martes, 28 de Julio de 2009 12:59

Con este script podras buscar en una base de datos SQL en donde aparece una determinada columna.

Supongamos que queremos buscar en que Stored Procedures (SP) se utiliza la columna CB_DIA_CIERRE.

DECLARE @ColumnName VARCHAR(50)

SET @ColumnName = 'CB_DIA_CIERRE'
SELECT Distinct SO.Name
     FROM sysobjects SO (NOLOCK)
        INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
            AND SO.Type = 'P'AND SC.Text LIKE '%'+@ColumnName+'%'
        ORDER BY SO.Name

Espero que haya sido de ayuda.

 

Actualizado ( Martes, 28 de Julio de 2009 14:12 )
 
Foro de Descargas PDF Imprimir E-mail
Noticias - General
  
Viernes, 06 de Febrero de 2009 10:20

Estamos estrenando nuestro nuevo portal de descargas con acceso desde las siguientes paginas:
www.clubdownload.com.ar
www.clubdownloads.com.ar
www.club-download.com.ar
www.club-download.com
el cual cuenta con un nuevo foro donde podras encontrar links de descargas directas o descargas P2P Riendo


TE ESPERAMOS!!!


Actualizado ( Miércoles, 25 de Marzo de 2009 09:31 )
 
<< Inicio < Prev 1 2 3 4 Próximo > Fin >>

Página 3 de 4

Acceso



Buscar:

Estadisticas

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy18
mod_vvisit_counterAyer32
mod_vvisit_counterEsta Semana395
mod_vvisit_counterEste Mes245
mod_vvisit_counterTotal14468