| 网站首页 | 建站学院 | 资源下载 | 建站教程 | 图片素材 | 网贝社区 | 
您现在的位置: 网贝建站 >> 建站学院 >> JSP技术 >> 数据库 >> 正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
没有相关文章
[组图]ChairSQL 的核心源代码       ★★★★
ChairSQL 的核心源代码
作者:chair3 文章来源:网海之贝 点击数: 更新时间:2004-8-22 15:09:30

相关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

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)