2KTO2K8-跨数据库服务器的操作

         前几开遇到一个需求,写入2K的时候写到2K8,当然自已写程序是容易之极。可惜写入的程序不是我写的。只能在他写入数据库的时候操作了。还好他是调用存储过程,在执行原有过程之前,执行自已的代码吧!用链接服务器是不错的选择,操作也很方便。但现实不一定是这样。要跨服务器调用又要开DTS,开了又要开一堆不是默认的选项。调用2K8的存储过程还要设定一堆配置,这些都算了。DTS还要有时候出错,什么登陆不了啊之类,虽然可以解决。但网管那关不是这么好过的。还是另想办法吧!2K还没有UDT,多郁闷的事啊!GOOGLE一下,原来还有个sp_OACreate(创建 OLE 对象的实例)。我也不太清楚是什么,知道如何用就行了。

        前期工作是准备一个Com,网上有都VB 和C#, 常用C#就只能用C#了。

        第一步.写好一个类。按教程在命令行执行

regasm LisSyncByCS.dll /tlb LisSyncByCS.tlb

        在SQLServer中执行

       

declare @err int,@src varchar(255),@desc varchar(255)
declare @obj int,@re int
--创建调用实例
exec @err=sp_OACreate 'LisSyncByCS.LisSync', @obj out
if @err<>0 goto lberr  --如果创建失败,则进行错误处理
--调用DLL中的函数
exec @err=sp_OAMethod @obj,'UpdateReport',@re out,100
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 错误描述

结果提示错误是

错误号    错误源    错误描述
0x800401F3    ODSOLE Extended Procedure     无效的类别字符串

又再GOOGLE一下。发现C#项目要进行一些操作。

选中类所在的项目,属性-程序集属性-使程序集com可见。

先把程序集御载了

regasm LisSyncByCS.dll /tlb /unregister

再装一遍。

这次的错误是:系统没有找到指定的文件

经查是。。没有将程序集放到全局程序集缓存。

呢个是咩来嘎。再GOOGLE


regasm  /codebase LisSyncByCS.dll /tlb 

/codebase  要求程序集有强签名。当然只是警告。MSDN说了。不放到全局程序集缓存就用这个选项。

虽然警告了。但还是可用的。

由于项目比较紧。以后再试强签名了 和把程序集放到全局缓存 Google Key:GACUTIL.exe

还有。Python也可以做成com 瞄了两眼。很简单,还是后试吧

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值