用Sql Server2000调用Com组件的自定义函数速度问题
我想对SQL SERVER2000数据进行加密,可是SQL SERVER2000只能加密存储过程等,而且网上就有破解之法,使用SQL SERVER2005可以实现数据加密,可是让用户装一大堆东西很是麻烦。因此想用程序自己写的加、解密,通过SQL SERVER2000调用com对象,实现。
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE FUNCTION [dbo].[FUNReturnMsg] (@c_id varchar(10), @c_name varchar(20), @c_sex varchar(10))
RETURNS nvarchar(255)
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 'TTFS.TTFSObject ', @object OUT
IF @hr <> 0
BEGIN
SELECT @return =@c_name
END
-- 调用对象方法。
EXEC @hr = sp_OAMethod @object, 'ReturnContent ', @return OUT ,@c_id,@c_name,@c_sex
IF @hr <> 0
BEGIN
SELECT @return = @c_name
END
-- 销毁对象实例。
EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
SELECT @return = @c_name
END
RETURN(@return)
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
可是发现实际使用起来,速度简直象牛需要8分钟,以下是调用:
SELECT dbo.FUNReturnMsg( '0 ', fieldname00, '你个老母 ') AS 内容 FROM table1
如果直接select fieldname00 FROM table1
速度不到0.5秒。
我修改程序为不进行任何操作,直接返回fieldname00,速度仍是8分钟。
所以瓶颈在SQL SERVER select时每条记录都要3步:创建 调用 释放。
帮帮我,看怎么解决这个问题或告诉我加密的更好方法。
------解决方案--------------------简单的加解密,异或
------解决方案--------------------在前台处理加密解密。
前台加密后直接追加或更新到后台。
从后台获取到本地后再解密。
------解决方案--------------------在where 后面的串,也在前台加密后传到后台。
------解决方案--------------------wangtiecheng(不知不为过,不学就是错!) (
前台处理好,.net很快的