zoukankan      html  css  js  c++  java
  • 加密当前数据库的所有存储过程。

    DECLARE @sp_name nvarchar(400)
    DECLARE @sp_content nvarchar(2000)
    DECLARE @asbegin int
    declare @now datetime
    select @now = getdate()
    DECLARE sp_cursor CURSOR FOR
    SELECT object_name(id)
    FROM sysobjects
    WHERE xtype = 'P'
    AND type = 'P'
    AND crdate < @now
    AND OBJECTPROPERTY(id, 'IsMSShipped')=0
    OPEN sp_cursor
    FETCH NEXT FROM sp_cursor
    INTO @sp_name
    WHILE @@FETCH_STATUS = 0
    BEGIN
    SELECT @sp_content = text FROM syscomments WHERE id = OBJECT_ID(@sp_name)
    SELECT @asbegin = PATINDEX ( '%AS' + char(13) + '%', @sp_content)
    SELECT @sp_content = SUBSTRING(@sp_content, 1, @asbegin - 1)
    + ' WITH ENCRYPTION AS'
    + SUBSTRING (@sp_content, @asbegin+2, LEN(@sp_content))
    SELECT @sp_name = 'DROP PROCEDURE [' + @sp_name + ']'
    EXEC sp_executesql @sp_name
    EXEC sp_executesql @sp_content
    FETCH NEXT FROM sp_cursor
    INTO @sp_name
    END
    CLOSE sp_cursor
    DEALLOCATE sp_cursor

    该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。本存储过程在 SQL Server 2000 上通过
  • 相关阅读:
    路由策略
    ospf 路由汇总
    OSPF type1 2
    ospf
    TCP 六种标识位
    raid 10 与 01
    SNMP协议
    ffmpeg剪切视频
    ubuntu18安装sbt
    服务器Ubuntu18重启后宝塔访问不了
  • 原文地址:https://www.cnblogs.com/sonicit/p/811695.html
Copyright © 2011-2022 走看看