zoukankan      html  css  js  c++  java
  • 查找SQL 存储过程、触发器、视图!

    ALTER proc [dbo].[SP_SQL](@ObjectName sysname)  
    as  
    set nocount on ;  
    declare @Print nvarchar(max)----@Print用nvarchar  
    if exists(select 1 from syscomments  where ID=object_id(@ObjectName) and encrypted=1)  
        begin  
             Print N'对象已加密!'  
             return  
        end  
      
    if coalesce(object_id(@ObjectName,N'P'),object_id(@ObjectName,N'FN'),object_id(@ObjectName,N'IF'),object_id(@ObjectName,N'TF'),object_id(@ObjectName,N'TR'),object_id(@ObjectName,N'V')) is  null  
        begin  
            Print N'对象只针对函数、存储过程、触发器、视图!'  
            return   
        end  
    --print 'Use '+db_Name()  
    --print 'Go'  
    print 'if object_ID('+quotename(case when charindex(']',@ObjectName)=0 then '['+replace(rtrim(@ObjectName),'.','].[')+']' else @ObjectName end ,'''')+') is not null'  
    print char(9)+'Drop '+case  when object_id(@ObjectName,N'P') is not null then 'Procedure ' when Coalesce(object_id(@ObjectName,N'FN'),object_id(@ObjectName,N'IF'),object_id(@ObjectName,N'TF')) is not null then 'Function ' when object_id(@ObjectName,N'TR') is not null then 'Trigger ' else 'View 'end +case when charindex(']',@ObjectName)=0 then '['+replace(rtrim(@ObjectName),'.','].[')+']' else @ObjectName end  
    Print 'Go'  
     
    declare @T table(Col nvarchar(max))  
    insert @T select object_definition(object_id(@ObjectName)) +char(13)+char(10) while (select max(Col) from @T)>''  
        begin  
            select top 1 @Print=left(Col,charindex(char(13)+char(10),Col)-1) from @T  
            print @Print  
            update @T set Col=stuff(Col,1,charindex(char(13)+char(10),Col)+1,'')  
        end  
    print 'Go' 
     
     
    SET NOCOUNT ON;
    DROP TABLE #TEMP
    SELECT NAME INTO #TEMP FROM SYS.objects WHERE type='TR'
    DECLARE @Count INT =0,
    @CurrentNo INT = 1,
    @Name sysname

    SELECT @Count = COUNT(1) FROM #TEMP
    WHILE @CurrentNo<=@Count
    BEGIN
        SELECT @Name = name FROM #TEMP
    PRINT 'EXEC SP_SQL '''+@Name+''''
    SET @CurrentNo = @CurrentNo+1
    DELETE #TEMP WHERE name=@Name
    END
    执行查询出来的结果
     
  • 相关阅读:
    vue-cli(vue脚手架)简单流程
    windows环境之node.js安装与环境配置
    fiddler的下载和简单使用
    Linux 配置nginx 代理tomcat,配置ssl
    来聊一聊导出数据问题
    作为一个开发人员应该具备怎么样技术栈和职业素养
    NODEJS的误打误撞
    聊一下程序员的日常
    openstack安装部署私有云详细图文
    openstack:OpenStack架构详解,
  • 原文地址:https://www.cnblogs.com/LuoEast/p/8351498.html
Copyright © 2011-2022 走看看