① 如何批量加密存储过程
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 = 0BEGINSELECT @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_nameENDCLOSE sp_cursor
该存储过程利用了 sysobjects 和 syscomments 表,并巧妙地修改了原存储过程的 SQL 定义语句,将 AS 修改为了 WITH ENCRYPTION AS,从而达到了加密存储过程的目的。
② 如何用sql2000写存储过程的加密
事件探查器只能监视到数据直接调用的存储过程的名字,如果该存储过程内部还有调用别的存储过程,就监测不到了。例如create
proc
存储过程A
@p_参数
declare
③ sqlserver2000中自己编的存储过程能不能加密
1. >>加密
From the Books Online:
Use the WITH ENCRYPTION option:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'encrypt_this' AND type = 'P')
DROP PROCEDURE encrypt_this
GO
USE pubs
GO
CREATE PROCEDURE encrypt_this
WITH ENCRYPTION
AS
SELECT *
FROM authors
GO
EXEC sp_helptext encrypt_this
2. 关键字 字节不受限制,比SQLexplorer安全,查看所有SYSCOMMENTS内加密的代码
create PROCEDURE sp_decrypt(@objectName varchar(50))
AS
begin
④ Oracle加密存储过程的问题
create or replace procere test1(ov_str out varchar2) as
begin
ov_str:= 'ssss';
end;
就你这个存储过程,我没看出有问题,你可以测试一下你的存储过程,先不要加密,看看你的程序有没有问题。
报的编译错
⑤ 数据库中怎样创建加密的存储过程
可以例用Oracle
自带的Wrap工具实现,此工具在$ORACLE_HOME/BIN目录下,具体如下
1、设置字符集环境变量
set
NLS_LANG=CHINESE_CHINA.ZHS16GBK
2、创建一个存储过程文件
在E:\下创建test.sql文件,内容如下:
create
or
replace
procere
test1(i
in
number)
as
begin
dbms_output.put_line('
输入参数是'||to_char(i));
end;
3、加密
c:\>
cd
%ORACLE_HOME%\BIN
c:\>wrap
iname=e:\test1.sql
PL/SQL
Wrapper:
Release
8.1.7.0.0
-
Proction
on
Tue
Nov
27
22:26:48
2001
Copyright
(c)
Oracle
Corporation
1993,
2000.All
Rights
Reserved.
Processing
test1.sql
to
test1.plb
4、运行test1.plb
sqlplus
/nolog
SQL>conn
TEST/TEST@db01
SQL>
@e:\a.plb
过程已创建。
5、运行存储过程
SQL>
set
serveroutput
on
SQL>
execute
test1(1);
输入参数是1
PL/SQL
过程已成功完成。
6、查看存储过程的代码
SQL>
select
name,text
from
all_source
where
type='PROCEDURE'
and
name='TEST1';
结果:看不到其原码
⑥ 存储过程一旦创建脚本就被加密不能再次编辑修改了吗
使用alter proc 就可以修改脚本了 或者在SQL Server Management Studio 中右键你要修改的存储过程,在菜单中点击修改存储过程。