易截截图软件、单文件、免安装、纯绿色、仅160KB

怎样对SQL Server 2005加密的存储过程进行解密

 SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密。和2000不一样的是,在2005的系统 表syscomments里已经查不到加密过的密文了。要查密文必须使用DAC(专用管理员连接)连接到数据库后,在系统表 sys.sysobjvalues查询,该表的列imageval存储了相应的密文。具体可以使用下面的查询:
  SELECT imageval from sys.sysobjvalues WHERE objid = object_id(@procedure) AND
  valclass = 1 AND subobjid = 1
  一 下面是解密的存储过程,具体代码如下:
  CREATE PROCEDURE dbo.sp__procedure$decrypt
  (@procedure sysname = NULL, @revfl int = 1)
  AS
  /*
  目前这个存储过程只能解密存储过程,至于解密函数、触发器、视图的存储过程本网站会进一步关注,调用形式为:
  exec dbo.sp__procedure$decrypt @procedure,0
  如果第二个参数使用1的话,会给出该存储过程的一些提示。
  */
  SET NOCOUNT ON
  IF @revfl = 1
  BEGIN
  PRINT '警告:该存储过程会删除并重建原始的存储过程。'
  PRINT ' 在运行该存储过程之前确保你的数据库有一个备份。'
  PRINT ' 该存储过程通常应该运行在产品环境的一个备份的非产品环境下。'
  PRINT ' 为了运行这个存储过程,将参数@refl的值更改为0。'
  RETURN 0
  END
  DECLARE @intProcSpace bigint, @t bigint, @maxColID smallint,@intEncrypted
  tinyint,@procNameLength int
  select @maxColID = max(subobjid),@intEncrypted = imageval from
  sys.sysobjvalues WHERE objid = object_id(@procedure)
  GROUP BY imageval
  --select @maxColID as 'Rows in sys.sysobjvalues'
  select @procNameLength = datalength(@procedure) + 29
  DECLARE @real_01 nvarchar(max)
  DECLARE @fake_01 nvarchar(max)
  DECLARE @fake_encrypt_01 nvarchar(max)
  DECLARE @real_decrypt_01 nvarchar(max),@real_decrypt_01a nvarchar(max)
  select @real_decrypt_01a = ''
  -- 从sys.sysobjvalues里提出加密的imageval记录
  SET @real_01=(SELECT imageval from sys.sysobjvalues WHERE objid =
  object_id(@procedure) and valclass = 1 and subobjid = 1 )
  --创建一个临时表
  create table #output ( [ident] [int] ID


相关文档:

sql 2005 存储过程分页 java 代码

 create PROCEDURE pagelist
@tablename nvarchar(50),
@fieldname nvarchar(50)='*',         
@pagesize int output,--每页显示记录条数
@currentpage int output,--第几页
@orderid nvarchar(50),--主键排序
@sort int,--排序方式,1表示升序,0表示降序排列 ......

SQL使用小结

1. 如果你希望使用selcet top语句,并且还要附带where条件,那么条件中的列就得是合适的索引,如聚集索引、复合索引里的主列
 等,同时,where条件里也要尽量避开使用函数,or,判断NULL等会引起全部扫描的语句,不然执行的是全表扫描。
2. 通过设置STATISTICS我们可以查看执行SQL时的执行效率以及相关性能测试 ......

Oracle的SQL*PLUS命令的使用大全

 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。
  
  我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进 ......

SQL 中 where 1=1 和 1=0的 作用

where 1=1有什么用?在SQL语言中,写这么一句话就跟没写一样。
select * from table1 where 1=1与select * from table1完全没有区别,甚至还有其他许多写法,1<>2,'a'='a','a'<>'b',其目的就只有一个,where的条件为永真,得到的结果就是未加约束条件的。
在SQL注入时会用到这个,例如select * from table1 ......

Sqlserver与access数据库sql语法十大差异

世事洞明皆学问,人情练达即文章。做ASP时,最常用的数据库即Sqlserver与Access数据库莫属了!
但使用会经常发现很多SQL执行的问题。这里整理出之间的差异,做个十大差异的总结。
ACCESS结构简单容易处理,而且也能满足多数的网站程序要求,也是初学者的试牛刀。
ACCESS是小型数据库,既然是小型就有他根本的局限性:
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号