① 如何批量加密存儲過程
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 中右鍵你要修改的存儲過程,在菜單中點擊修改存儲過程。