虽然MS SQl存储过程自带有加密的方法,但现在外面有很可软件可以解掉。
解决的方法是写DLL或OLE程序,然后在数据库中调用就行了,SQL的很多扩展存储过程就是用DLL
--SQL Server的存储过程调用Com组件
/*--下面的部分在VB中完成
首先我们先用VB 作一个最简单的组件
工程名称: testSQLCOM
类名: TestMath
'函数,计算两个整数相加的结果
Public Function AddMe(a As Long, b As Long) As Long
AddMe = a + b
End Function
编译生成后,我们就可以在 Sql Server 中对这个 Com 组件进行调用了
--*/
/*--下面是SQL中对上面DLL的调用--*/
--定义用到的变量
declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@re int
--创建调用实例
exec @err=sp_OACreate 'testSQLCOM.TestMath', @obj out
if @err<>0 goto lberr --如果创建失败,则进行错误处理
--调用DLL中的函数
exec @err=sp_OAMethod @obj,'AddMe',@re out,100,200
if @err<>0 goto lberr --如果调用错误,则进行错误处理
print '返回的结果是:' + str(@re)
--完成后释放
exec sp_OADestroy @obj
return
lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
下面这个是开发项目时朋友写的,以做参考:)
CREATE FUNCTION SMSFormatMsg (@s1 nvarchar(1000), @s2 nvarchar(1000))
RETURNS nvarchar(1000)
AS
BEGIN
DECLARE @object int
DECLARE @hr int
DECLARE @property varchar(255)
DECLARE @return varchar(255)
DECLARE @src varchar(255), @desc varchar(255)
-- 创建对象实例。
EXEC @hr = sp_OACreate 'SQLOLEProc.CbkSms', @object OUT
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END
-- 调用对象方法。
EXEC @hr = sp_OAMethod @object, 'FormatMsg', @return OUT , @s1, @s2
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END
-- 销毁对象实例。
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
SELECT @return = 'error'
END
RETURN(@return)
END
@注:Original Letters
http://www.cnblogs.com/rolinson/archive/2005/02/26/109540.html
分享到:
2010-09-21 08:35
浏览 1179
分类:数据库
评论