sql server存储过程、存储函数的加密、解密

2016-01-29 16:24 43 1 收藏

sql server存储过程、存储函数的加密、解密,sql server存储过程、存储函数的加密、解密

【 tulaoshi.com - SQLServer 】

 

存储过程、存储函数的加密:WITH ENCRYPTION
<!--[if !supportLineBreakNewLine]--
<!--[endif]--

CREATE procedure dbo.sp_XML_main

@table_name nvarchar(260)='',

@dirname nvarchar(20)=''

WITH ENCRYPTION

as

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

....................................................

end

go
 

 

存储过程、存储函数的解密(以下是一位绝世高人编写的代码)

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_decrypt]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[sp_decrypt]

GO

 

/*--破解函数,过程,触发器,视图.仅限于SQLSERVER2000

 

--作者:J9988--*/

/*--调用示例

 

    --解密指定存储过程

    exec sp_decrypt 'AppSP_test'

 

    --对所有的存储过程解密

    declare tb cursor for

    select name from sysobjects where xtype='P' and status0 and name<'sp_decrypt'

   

    declare @name sysname

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

    open tb

    fetch next from tb into @name

    while @@fetch_status=0

    begin

        print '/*-------存储过程 ['+@name+'] -----------*/'

        exec sp_decrypt @name

        fetch next from tb into @name

    end

    close tb

    deallocate tb

--*/

 

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP_DECRYPT]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

    drop procedure [dbo].[SP_DECRYPT]

GO

 

CREATE  PROCEDURE sp_decrypt(@objectName varchar(50))

AS

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

set nocount on

--CSDN:j9988 copyright:2004.04.15

--V3.1

--破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器

--修正上一版视图触发器不能正确解密错误

--发现有错,请E_MAIL:CSDNj9988@tom.com

begin tran

declare @objectname1 varchar(100),@orgvarbin varbinary(8000)

declare @sql1 nvarchar(4000),@sql2 varchar(8000),@sql3 nvarchar(4000),@sql4 nvarchar(4000)

DECLARE  @OrigSpText1 nvarchar(4000),  @OrigSpText2 nvarchar(4000) , @OrigSpText3 nvarchar(4000), @resultsp nvarchar(4000)

declare  @i int,@status int,@type varchar(10),@parentid int

declare @colid int,@n int,@q int,@j int,@k int,@encrypted int,@number int

select @type=xtype,@parentid=parent_obj from sysobjects where id=object_id(@ObjectName)

 

create table  #temp(number int,colid int,ctext varbinary(8000),encrypted int,status int)

insert #temp SELECT number,colid,ctext,encrypted,status FROM syscomments  WHERE id = object_id(@objectName)

select @number=max(number) from #temp

set @k=0

 

while @k<=@number

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

if exists(select 1 from syscomments where id=object_id(@objectname) and number=@k)

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

if @type='P'

set @sql1=(case when @number1 then 'ALTER PROCEDURE '+ @objectName +';'+rtrim(@k)+' WITH ENCRYPTION AS '

                          else 'ALTER PROCEDURE '+ @objectName+' WITH ENCRYPTION AS '

                          end)

 

if @type='TR'

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

declare @parent_obj varchar(255),@tr_parent_xtype varchar(10)

select @parent_obj=parent_obj from sysobjects where id=object_id(@objectName)

select @tr_parent_xtype=xtype from sysobjects where id=@parent_obj

if @tr_parent_xtype='V'

begin

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/sqlserver/)

set @sql1='ALTER TR

来源:https://www.tulaoshi.com/n/20160129/1498537.html

延伸阅读
标签: SQLServer
  SQL server 的扩展存储过程,其实就是一个普通的 windows DLL,只不过按照某种规则实现了某些函数而已。 近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别注意的地方。之所以会特别注意,是因为DLL运行于SQL server的地址空间,而SQL Server到底是怎么进行线程调度的,却不是我们能了解的,即便了解也无法控制。...
标签: SQLServer
建立表: CREATE TABLE [TestTable] (  [ID] [int] IDENTITY (1, 1) NOT NULL ,  [FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  [LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,  [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,  [Note] [nvarchar] (2000) COLLATE C...
标签: SQLServer
SQL Server 的扩展存储过程,其实就是一个普通的 Windows DLL,只不过按照某种规则实现了某些函数而已。 近日在写一个扩展存储过程时,发现再写这类动态库时,还是有一些需要特别注意的地方。之所以会特别注意,是因为DLL运行于SQL Server的地址空间,而SQL Server到底是怎么进行线程调度的,却不是我们能了解的,即便了解也无法控制。 我们...
听说MS SQL 2005自带报表功能,于是我测试了一下,还算比较好用,所以我就录了一个用存储过程来写报表的例子。由于测试过程当中没有语音,所以我在这里讲解一下。 使用的存储过程如下(录象中到最后我更改了一下存储过程): 使用的数据库是MS SQL 2000的Northwind数据库,表是orders。 if exists(select * from sysobjects whe...
标签: SQLServer
如何在启动SQL SERVER的时候,执行一个存储过程? 将存储过程创建在master数据库中,然后企业管理器中找到这个存储过程--右键--属性--勾选"每当sql server启动时执行"。 或者在master中创建存储过程后,执行语句设置为自动启动 use master exec sp_procoption '存储过程名','startup','on' 自动执行存储过程 ...

经验教程

354

收藏

21
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部