sábado, 5 de mayo de 2018

Scripts utiles para listar triggers, procedimientos, esquemas

Posted by InfoTacticas Soluciones  |  No comments

A continuación mostramos varias instrucciones en SQL SERVER que pueden resultar útiles para listar triggers, procedimientos almacenados, vistas, esquemas, etc. Las pruebas siguientes se realizan sobre la base de datos ADVENTUREWORKS.

  • Listar las tablas que tienen triggers
    --
    --
    SELECT name AS tbname, * 
    FROM sysobjects WHERE id IN(SELECT parent_obj FROM sysobjects WHERE xtype='tr')
    
    -- o
    SELECT ta.name AS tbname, * 
    FROM sys.objects ta
    inner join sys.objects tr on ta.object_id = tr.parent_object_id
    WHERE tr.type = 'TR'
    
    

  • Obtener metadata con la definición del esquema de una tabla.
    --
    --
    select * 
    from Information_schema.Columns
    where table_name = 'WorkOrder'
    
    

  • Listar el esquema, la tabla y sus triggers.
    --
    --
    SELECT   sch.name AS nombre_esquema, ta.name as 'nombre_tabla', tr.name as nombre_trigger, tr.object_id, *
    FROM    sys.objects tr
    INNER JOIN sys.schemas sch ON tr.schema_id = sch.schema_id
    inner join  sys.objects ta on tr.parent_object_id = ta.object_id
    where tr.type = 'TR'
    order by sch.name, ta.name
    
    

  • Listar los triggers y si están deshabilitados o no.
    --
    --
    
    SELECT  
           TAB.name as Table_Name 
         , TRIG.name as Trigger_Name
         , TRIG.is_disabled  
    FROM [sys].[triggers] as TRIG 
    inner join sys.tables as TAB on TRIG.parent_id = TAB.object_id 
    --where TRIG.is_disabled = 1
    --t.name in ('WorkOrder', 'Vendor');
    

  • La definición de los triggers de unas tablas.
    --
    --
    
    select so.name, text
    from sysobjects so, syscomments sc
    where type = 'TR'
    and so.id = sc.id
    and so.name like '%WorkOrder%'
    
    

  • Listar los nombres de tablas y su esquema de base de datos.
    --
    --
    SELECT  o.name AS tbname, s.name AS schema_name
    FROM    sys.objects o 
    INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
    WHERE type='U' ORDER BY schema_name,o.name
    
    

  • Listado de objetos según su tipo.
    --
    --
    SELECT schema_Name(schema_id)  as  Nombre_Esquema,
           [name] as Nombre_Objeto,  --  Nombre de la tabla, procedimiento almacenado, vista o función
           [type] as Tipo_Objeto              --  'V' para Vistas, 'U' para Tablas, 'P' para Procedimientos Almacenados, 'FN' para funciones
    FROM sys.objects 
    WHERE [type_desc] IN ( 'USER_TABLE', 'SQL_STORED_PROCEDURE', 'VIEW', 'SQL_SCALAR_FUNCTION')
    AND [name] NOT LIKE 'sp_%'
    AND [name] NOT LIKE 'fn_%'
    ORDER BY 3 DESC,        --  primero el tipo de objeto
            1 ASC,          --  luego el esquema
            2 ASC           --  luego el nombre de la tabla /  función
    
    

  • Listado de triggers y su definición.
    --
    --
    SELECT * FROM SYS.SYSCOMMENTS 
    WHERE TEXT LIKE '%CREATE TRIGGER%'
    
    

  • Listado los indices de todas las tablas de una base de datos.
    --
    --
    SELECT 
          s.name,tab.name as tablename,
                ind.name as indexname  
    FROM 
         sys.indexes ind 
    INNER JOIN 
         sys.tables tab ON ind.object_id = tab.object_id
    INNER JOIN sys.schemas s on tab.schema_id = s.schema_id
    ORDER BY  s.name,tab.name
    
    

5/05/2018 01:59:00 p. m. Share:

0 comentarios:

Get updates in your email box
Complete the form below, and we'll send you the best coupons.

Deliver via FeedBurner
back to top