SQL中的OLE错误

时间:2010-01-14 18:11:34

标签: sql-server tsql stored-procedures ole

我有

的Windows Server 2003 Standard x64 Edition SP2

Windows NT 5.2(Build 3790:Service Pack 2)上的Microsoft SQL Server 2005 - 9.00.4035.00(X64)企业版(64位)

我下载了CAPICOM Platform SDK Redistributable:http://www.microsoft.com/downloads/details.aspx?FamilyId=860EE43A-A843-462F-ABB5-FF88EA5896F6&displaylang=en

并从中安装 c:\ Windows \ syswow64与c:\ Windows \ syswow64 \ regsvr32.exe capicom.dll并成功注册。

当我试图跑

DECLARE @S varchar(255) 
DECLARE @D varchar(255)
DECLARE @O int

EXEC @C = sp_OACreate 'CAPICOM.EncryptedData', @O OUT
IF @C <> 0
BEGIN
  EXEC sp_oageterrorinfo @O, @S out, @D out 
  SELECT err=CONVERT(VARBINARY(4),@C), source=@S, description=@D
  RETURN
END

我收到了错误消息。

0x80040154  ODSOLE Extended Procedure    Class not registered

我该怎么办?我该如何检查CAPICOM.DLL是否正确注册?

3 个答案:

答案 0 :(得分:1)

这是reason 这个组件有64位版本吗?

答案 1 :(得分:1)

CAPICOM不会发送64位afaik,deprecated

  

CAPICOM是一个仅限32位的组件   可以在。中使用   以下操作系统:Windows   Server 2008,Windows Vista,Windows   XP和Windows 2000.相反,使用   .NET Framework实现安全性   特征。有关更多信息,请参阅   Alternatives to Using CAPICOM

在SQL 2005 itslef中的加密函数和CRL过程访问.Net加密文件之间,坦率地说,我认为没有理由坚持使用COM加密API。当然,我知道你可以拥有遗留代码并且需要支持它,为新的开发提供支持绝对不是没有。

答案 2 :(得分:1)

这个答案详细介绍了如何为CAPICOM注册代理,以便可以在64位进程中使用它。

我实际上这样做是为了使用64位SQL Server中的CAPICOM而且工作正常。