Find all references to an object in an SQL Server database

后端 未结 10 1705
深忆病人
深忆病人 2020-12-13 10:02

I\'m trying to find all references to an object in an SQL Server database.

How can I quickly search? SQL Server Management Studio does not seem to do it. I use http:

10条回答
  •  -上瘾入骨i
    2020-12-13 10:22

    With the use of an undocumented SQL sp: sp_msforeachdb

    exec sp_msforeachdb '
    USE [?];
    
    --IF DB_NAME() NOT IN (''master'',''tempdb'',''model'',''msdb'')
    BEGIN
    DECLARE 
        @SearchStr varchar(100) 
        SET @SearchStr = ''%column_store_segments%''; 
    SELECT DISTINCT
        ''?'' as db_name, o.name
        , ( CASE upper(o.xtype) 
                WHEN ''C'' THEN ''CHECK constraint''        
                WHEN ''D'' THEN ''Default or DEFAULT constraint''                       
                WHEN ''F'' THEN ''FOREIGN KEY constraint''  
                WHEN ''L'' THEN ''Log''                                                                 
                WHEN ''FN'' THEN ''Scalar function''        
                WHEN ''IF'' THEN ''Inline table-function''
                WHEN ''PK'' THEN ''PRIMARY KEY or UNIQUE constraint''
                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 ''UQ'' THEN ''UNIQUE constraint (type is K)''                  
                WHEN ''X'' THEN ''Extended stored procedure''                           
            ELSE upper(o.xtype) END ) Type
        , ( CASE upper(o.xtype)
                WHEN ''PK'' THEN ( select object_name(parent_object_id) FROM sys.key_constraints (nolock) WHERE o.name=name )
                WHEN ''F'' THEN ( select object_name(parent_object_id) FROM sys.foreign_keys (nolock) WHERE o.name=name )
                WHEN ''TR'' THEN ( select object_name(parent_id) FROM sys.triggers (nolock) WHERE o.name=name )     
            ELSE '''' END ) as Parent_Object
    FROM sysobjects o (nolock) 
    INNER JOIN syscomments sc (nolock) ON o.id = sc.id
    WHERE UPPER( text ) LIKE UPPER( @SearchStr ) AND substring(o.name,1,3)<> ''dt_'' 
    GROUP BY o.name, o.xtype
    END'
    GO
    

提交回复
热议问题