|
相关ChairSQL说明与下载:http://netbei.com/Soft/other/other4/200408/576.html
1、消除孤立用户 print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Go
if Exists( Select * From sysObjects where name='spAloneUser' ) Drop Proc spAloneUser go
Create Proc spAloneUser( @sDataBase sysname, @sLogin varchar(1000), @sPassWord varchar(1000) ) With Encryption /****************************************************/ --名称:spAloneUser --功能:解决孤立用户 --参数: --返回: --引用: --使用:chair3 --备注:只允许dbo运行。 --作者:chair3.2001.11.29 --联系 www.chair3.com (3腿软件网) /*****************************************************/ As Begin Declare @sid varbinary(85) Declare @Sql Nvarchar(1000)
--Add Login if Not Exists(Select * from master.dbo.syslogins Where name=@sLogin) Exec sp_AddLogin @sLogin,@sPassWord
Exec sp_configure 'allow updates','1' Reconfigure With OverRide
Select @sid=sid from Master.dbo.syslogins where name=@sLogin
if Exists(Select * From Master.dbo.SysDatabases Where name=@sDataBase) begin Set @Sql=N'Update '+@sDataBase+'.dbo.sysusers Set sid=@insid Where name=@insLogin ' Exec sp_ExecuteSql @Sql, N'@insid varbinary(85),@insLogin varchar(1000)', @sid, @sLogin end Exec sp_configure 'allow updates','0' Reconfigure With OverRide End
/* Exec spAloneUser 'Monitor','a','b' */ Go
print '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'
Go
------------------------------------- 2、清除日志
print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Go
if Exists( Select * From sysObjects where name='spClearLog' ) Drop Proc spClearLog go
Create Proc spClearLog(@sDataBase sysname)
With Encryption As /****************************************************/ --名称:spClearLog --功能:截断系统日志,并还原给操作系统 --参数: --返回: --引用: --使用:chair3 --备注:只允许dbo,db_owner运行。 --作者:chair3.2002.7.27 --联系 www.chair3.com (3腿软件网) /*****************************************************/ Begin Declare @Sql nvarchar(1000) Declare @LogLogicName nchar(128)
Set @Sql='Select @insLogLogicName=Name From '+@sDataBase+'.dbo.sysfiles Where GroupID=0' Exec sp_ExecuteSql @Sql, N'@insLogLogicName nchar(128) output', @LogLogicName output
Set @Sql=' Backup log '+@sDataBase+' with no_log Use '+@sDataBase+' Dbcc ShrinkFile('+@LogLogicName+',1) ' Exec sp_ExecuteSql @Sql
End
Go
print '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'
Go
----------------------------------------------------------------------------------------------- 3、清除程序注释
print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Go
if Exists( Select * From sysObjects where name='spClearNote' ) Drop Proc spClearNote go
Create Proc spClearNote(@SQL Nvarchar(4000), @SQLOutput Nvarchar(4000) output ) With Encryption /****************************************************/ --名称:spClearNote --功能:消除注释(有部分无法消除,但不会影响SP的执行) --参数:1、入口SQL 2、出口SQL --返回: --引用: --使用:chair3 --备注:只允许dbo运行。 --作者:chair3.2001.11.29 --联系 www.chair3.com (3腿软件网) /*****************************************************/ As begin Declare @S1 Nvarchar(4000) Declare @S2 Nvarchar(4000) Declare @i1 int declare @i2 int
While (Charindex('--',@SQL,0)<>0) begin Set @i1=Charindex('--',@SQL,0) Set @i2=CharIndex(Char(13),@SQL,@i1)
Set @S1=SubString(@SQL,0,@i1) Set @S2=SubString(@SQL,@i2,4000) --这里没有删除回车 Set @SQL=@s1+@s2 end
While (CharIndex('/*',@SQL,0)<>0) begin Set @i1=CharIndex('/*',@SQL,0) Set @i2=CharIndex('*/',@SQL,@i1)
Set @S1=SubString(@SQL,0,@i1) Set @S2=char(13)+SubString(@SQL,@i2+2,4000) --这里增加了一个回车 Set @SQL=@s1+@s2 end Set @SQLOutput=@SQL
end
/* spClearNote 'spEnc' Select 'sss'+char(13)+'fff'
*/
Go
print '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'
Go
-------------------------------------------------------------------------------------------- 4、加密SP、FN print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Go
if 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 spEnc
Declare @i int Declare @j int Set @i=1 Set @j=2 Select @i,@j */
Go
print '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'
Go
-------------------------------- 5、加密整个数据库程序
print '' print '--------------更新信息'+Cast(GetDate() As varchar(100))+'-------------' print '已经运行更新程序,如果下面有错误的信息提示,请向我们咨询。' print '或者,请把这个运行结果文件保存好,发到我们的信箱里,并通知我们。' print '----------------------------------------------------------------' Go
if Exists( Select * From sysObjects where name='spEncryptDB' ) Drop Proc spEncryptDB go
Create Proc spEncryptDB(@sDBName varchar(255) ) with Encryption /****************************************************/ --名称:spEncryptDB --功能:加密数据库程序(只加密SP与FN) --参数:要加密的对象 --返回: --引用:spEncrypt --使用:chair3 --备注:只允许dbo运行。 --作者:chair3.2001.11.29 --联系 www.chair3.com (3腿软件网) /*****************************************************/ As Begin Declare @SQL Nvarchar(4000)
Set @SQL='
Use '+@sDBName+'
Declare @ObjectName varchar(255)
Declare curObject cursor for Select [Name] From sysObjects Where (xtype=''P'' and (OBJECTPROPERTY(id, N''IsMSShipped'') =0)) or (xtype=''FN''and (OBJECTPROPERTY(id, N''IsMSShipped'') =0))
Open curObject
Fetch Next From curObject Into @ObjectName While ( @@Fetch_Status=0 ) begin Exec spEncrypt @ObjectName
Fetch Next From curObject Into @ObjectName end
Close curObject DEALLOCATE curObject
' --Select (@SQL) Execute (@SQL) End
/* Select * From syscomments Exec spEncryptDB 'bbbb'
*/
Go
print '' print '----------------------------------------------------------------' print '更新完毕!请注意是否有错误信息,如果没有,就是成功。'
Go |