当前位置:首页 > 系统运维 > 正文内容

SQL Server里调用COM组件的操作流程

a8116255316年前 (2010-07-20)系统运维10

文章主要描述的是在SQL Server里调用COM组件的实际操作步骤,在SQL Server数据库里可以调用基于IDispatch的COM组件,你假如对其有兴趣的可以自己去查SQL帮助里的sp_OACreate、sp_OAMethod、sp_OADestroy等存储过程的用法。

下面是我在一个短信报警的小项目里的一些sql代码,报警信息通过各类软件插入到SQL Server里,然后通过触发器调用组件,并发送短信到指定手机上去,实现自动报警功能。

测试数据库的触发器

ALTER TRIGGER message_Trigger1  ON dbo.message  FOR INSERT /*, UPDATE, DELETE */  AS  /* IF UPDATE (column_name) ...*/  begin  declare @PhoneNum nvarchar(50)  declare @Content nvarchar(140)  declare @MessageId nvarchar(70)  declare @index int  declare @hr int  declare @object int  select @PhoneNum = phone_num, @ContentContent = Content, @MessageId = message_id from inserted  select @index = 1 

调用COM发送短信

begin  EXEC @hr = sp_OACreate '{26850DDA-862C-44FF-9232-282937F2CA4B}',@object OUT  if @hr = 0 begin  exec @hr=sp_OAMethod @object,'SendMsg',NULL,@Content,@PhoneNum,@index,@MessageId  exec sp_OADestroy @object  end  end  end  

这里的代码可以说是没有问题,但是也可以说是有很大的问题。

关键就在于组件的SendMsg *** ,为什么呢?我可以举出几个我实际碰到的问题来做具体说明。

最主要有2点

第1:此SQL Server里调用COM组件是否为进程内组件,组件内部代码是否足够强壮

第2:创建组件和销毁组件及组件 *** 要尽更大可能的快速

我对上述两点做一个说明

假如SQL Server里调用COM组件为进程内组件的话,意味着此组件被SQL Server加载,假如此代码不够健壮,那么,由于组件本身导致的挂起,崩溃,会直接影响到整个SQL Server,那么情况是非常严重的,这种错误,发生一次就足以要了你的小命,假如恰好在客户的脸上爆炸的话……

解决的 *** 只有这样:首先保证你的组件代码足够强壮,强壮到不能再强壮为止。还有就是尽量让组件不要是进程内的,假如已经是DLL了,那么就交给COM+ Catalog来管理。这样就解决了因为组件崩溃挂起导致SQL Server产生问题。

其次,要让你的组件的创建、 *** 调用、销毁都快到不能再快,要快到几乎瞬间就完成。否则假如突然有海量数据进来,你的触发器来不及反映,那你的数据就可能被回滚掉,而且这些数据很重要,那你就等着被Fire吧 L 5555~~~~~

假如非要用这种 *** 的话,那么就要完成我上面提到的2点,并且更好启用COM+对象池。假如 *** 需要很长时间才能返回,并且无法优化了,那么就把这些 *** 移出去,把这些动作在另外的程序里做,让COM *** 立刻返回。

总而言之,言而总之,在系统集成的时候假如几个开发厂商没有商量好接口,并且都采用SQL Server数据库,那么关于此类数据的操作,似乎用这样的 *** 就是更好的补救。

以上的相关内容就是对SQL Server里调用COM组件的介绍,望你能有所收获。 

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/22122.html

分享给朋友:

“SQL Server里调用COM组件的操作流程” 的相关文章

windows 7/8.1正在启动windows时间长的解决方法

windows 7/8.1正在启动windows时间长的解决方法

正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...

windows 7系统开机提示press any key to restart的故障分析及解

windows 7系统开机提示press any key to restart的故障分析及解

Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

各个都很实用:windows 7系统电脑日常小技巧

各个都很实用:windows 7系统电脑日常小技巧

在使用Windows 7的时候很多用户对于系统的很多功能并不是很了解,也正是因为这样的不了解导致很多用户在使用Win 之后并不能体验Windows 7的功能便携和强大功能,导致很多用户对于Windows 7的认识还是比较模糊,不过为了让更多的朋友了解Windows 7的特点和便携应用,今天就为大家汇...

Skylake平台不能通过USB接口装windows 7系统

Skylake平台不能通过USB接口装windows 7系统

Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...

windows 7系统件夹和文件都不显示名字如何解决

windows 7系统件夹和文件都不显示名字如何解决

假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...