关于存储过程加密的一些问题

fstao 2006-05-13 10:30:40
我现在在sqlserver2000有几百多个存储过程,如果我要加密时,就要打开每个存储过程,加上一行“
WITH ENCRYPTION”,比如某个存储过程:

CREATE procedure dbo.sp_XML_main



@table_name nvarchar(260)='',



@dirname nvarchar(20)=''



WITH ENCRYPTION



as



begin



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



end


问题是,有没有一种方法一次性把所有的存储过程加上这一句语句“WITH ENCRYPTION”,就可以加密,这样我就不要打开每个存储过程,加上“WITH ENCRYPTION”,然后运行。
...全文
255 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
glorier 2006-07-14
  • 打赏
  • 举报
回复
你的存储过程的创建语句应该写在一个.sql文件里面啊,这样便于管理和应用,比如多个数据库都用这些存储过程,如果修改某个存储过程,只要改这个.sql文件就好了,改好后运行一下这个文件就ok了。当然每个创建语句前加上drop语句。
if exists (select * from sysobjects where id = object_id('dbo.sp_1') and sysstat & 0xf = 4)
drop procedure dbo.sp_1GO
CREATE PROCEDURE sp_1 AS
。。。。
你那个加密的问题也可以通过query里面的替换操作了啊
TT008 2006-07-14
  • 打赏
  • 举报
回复
Study
fstao 2006-05-20
  • 打赏
  • 举报
回复
觉得这个不很好的加密的,会丢失存储过程,有没有更好的
a97191 2006-05-13
  • 打赏
  • 举报
回复
mark
新鲜鱼排 2006-05-13
  • 打赏
  • 举报
回复
看看
hlq8210 2006-05-13
  • 打赏
  • 举报
回复
下面给出了一个存储过程,它的作用是自动将当前数据库的用户存储过程加密。
DECLARE @sp_name nvarchar(400)
DECLARE @sp_content nvarchar(2000)
DECLARE @asbegin int
declare @now datetime
select @now = getdate()
DECLARE sp_cursor CURSOR FOR
SELECT object_name(id)
FROM sysobjects
WHERE xtype = 'P'
AND type = 'P'
AND crdate < @now
AND OBJECTPROPERTY(id, 'IsMSShipped')=0
OPEN sp_cursor
FETCH NEXT FROM sp_cursor
INTO @sp_name
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @sp_content = text FROM syscomments WHERE id = OBJECT_ID(@sp_name)
SELECT @asbegin = PATINDEX ( '%AS' + char(13) + '%', @sp_content)
SELECT @sp_content = SUBSTRING(@sp_content, 1, @asbegin - 1)
+ ' WITH ENCRYPTION AS'
+ SUBSTRING (@sp_content, @asbegin+2, LEN(@sp_content))
SELECT @sp_name = 'DROP PROCEDURE [' + @sp_name + ']'
EXEC sp_executesql @sp_name
EXEC sp_executesql @sp_content
FETCH NEXT FROM sp_cursor
INTO @sp_name
END
CLOSE sp_cursor
DEALLOCATE sp_cursor
该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。
blueshu 2006-05-13
  • 打赏
  • 举报
回复
谁再贴个批量解密的吧
^__^
itblog 2006-05-13
  • 打赏
  • 举报
回复
呵呵,学习一下~
云中客 2006-05-13
  • 打赏
  • 举报
回复
的确是段不错的代码,
最后能在删除原存储过程和创建新存储过程中加上事务来控制,否则可能出现原来的存储过程已删除,而新存储过程创建中出现错误,造成存储过程丢失的现象

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧