print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Goif Exists( Select * From sysObjects where name='spEncrypt' ) Drop Proc spEncrypt go Create Proc spEncrypt(@sObjectName varchar(255) ) With Encryption /****************************************************/ --名称:spEncrypt --功能:加密SP,FN等 --参数:要加密的对象 --返回: --引用:spClearNote --使用:chair3 --备注:只允许dbo运行。 --作者:chair3.2001.11.29 --联系:www.chair3.com (3腿软件网) /*****************************************************/
As Begin Declare @SQL Nvarchar(4000) Declare @S1 Nvarchar(4000) Declare @S2 Nvarchar(4000) Declare @iCreatePos int Declare @iAsPos Int Set @SQL=''--考虑存储过程组,采用游标。 Declare curGroup cursor for Select [Text] From sysComments Where [ID]=object_id(@sObjectName) and Encrypted=0 Open curGroup Fetch Next From curGroup Into @SQL While ( @@Fetch_Status=0 ) begin ----------------------------------------开始处理 --消除注释 Exec spClearNote @SQL,@SQL output --先把制表符、换行符、回车全部更新为空格。 Set @SQL=Replace(@SQL,char(9),Space(1)) Set @SQL=Replace(@SQL,char(10),Space(1)) Set @SQL=Replace(@SQL,char(13),Space(1)) --更换字符 Set @iCreatePos=(Charindex('create',@SQL,0)) Set @iAsPos=(Charindex(' as ',@SQL,0)) Set @S1=SubString(@SQL,0,@iCreatePos+6) Set @S1=Replace(@S1,'create','alter') Set @S1=@S1+SubString(@SQL,@iCreatePos+6,@iAsPos-@iCreatePos-6)+' With Encryption '
Set @S2=SubString(@SQL,@iAsPos,4000) Set @SQL=@S1+@S2 Execute (@SQL) ------------------------------------------结束处理 Fetch Next From curGroup Into @SQL end Close curGroup Deallocate curGroup -- Select @iCreatePos -- Select @iAsPos -- Select @s1 -- Select @SQL End /* Select * From syscomments Exec spEncrypt 'spEnc' Exec spEncrypt 'fnCallXp' Exec spEncDeclare @i int Declare @j int Set @i=1 Set @j=2 Select @i,@j */Goprint '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'Go
print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------'
print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。'
print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。'
print '----------------------------------------------------------------'
Goif Exists( Select * From sysObjects where name='spEncrypt' )
Drop Proc spEncrypt
go
Create Proc spEncrypt(@sObjectName varchar(255) )
With Encryption
/****************************************************/
--名称:spEncrypt
--功能:加密SP,FN等
--参数:要加密的对象
--返回:
--引用:spClearNote
--使用:chair3
--备注:只允许dbo运行。
--作者:chair3.2001.11.29
--联系:www.chair3.com (3腿软件网)
/*****************************************************/
As
Begin
Declare @SQL Nvarchar(4000)
Declare @S1 Nvarchar(4000)
Declare @S2 Nvarchar(4000) Declare @iCreatePos int
Declare @iAsPos Int Set @SQL=''--考虑存储过程组,采用游标。
Declare curGroup cursor
for
Select [Text] From sysComments Where [ID]=object_id(@sObjectName) and Encrypted=0
Open curGroup Fetch Next From curGroup Into @SQL
While ( @@Fetch_Status=0 )
begin
----------------------------------------开始处理
--消除注释
Exec spClearNote @SQL,@SQL output
--先把制表符、换行符、回车全部更新为空格。 Set @SQL=Replace(@SQL,char(9),Space(1))
Set @SQL=Replace(@SQL,char(10),Space(1))
Set @SQL=Replace(@SQL,char(13),Space(1))
--更换字符 Set @iCreatePos=(Charindex('create',@SQL,0))
Set @iAsPos=(Charindex(' as ',@SQL,0)) Set @S1=SubString(@SQL,0,@iCreatePos+6)
Set @S1=Replace(@S1,'create','alter')
Set @S1=@S1+SubString(@SQL,@iCreatePos+6,@iAsPos-@iCreatePos-6)+' With Encryption '
Set @S2=SubString(@SQL,@iAsPos,4000)
Set @SQL=@S1+@S2 Execute (@SQL)
------------------------------------------结束处理 Fetch Next From curGroup Into @SQL
end Close curGroup
Deallocate curGroup -- Select @iCreatePos
-- Select @iAsPos
-- Select @s1
-- Select @SQL
End
/*
Select * From syscomments
Exec spEncrypt 'spEnc'
Exec spEncrypt 'fnCallXp'
Exec spEncDeclare @i int Declare @j int Set @i=1 Set @j=2 Select @i,@j
*/Goprint ''
print '----------------------------------------------------------------'
print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'Go