莫相离 发表于 2015-1-16 22:42:28

MSSQL网站制作之关于在SQL-SERVER里挪用COM组件

目前的方案是用mysqlbinlog工具,增加一个flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。serverSql-server里能够挪用基于IDispatch的COM组件
有乐趣的能够本人往查SQL匡助里的sp_OACreate、sp_OAMethod、sp_OADestroy等存储历程的用法。
上面是我在一个短信报警的小项目里的一些sql代码,报警信息经由过程各种软件拔出到sql-server里,然后经由过程触发器挪用组件,并发送短信到指定手机上往,完成主动报警功效。
//测试数据库的触发器
ALTERTRIGGERmessage_Trigger1
ONdbo.message
FORINSERT/*,UPDATE,DELETE*/
AS
/*IFUPDATE(column_name)...*/
begin
declare@PhoneNumnvarchar(50)
declare@Contentnvarchar(140)
declare@MessageIdnvarchar(70)
declare@indexint
declare@hrint
declare@objectint
select@PhoneNum=phone_num,@Content=Content,@MessageId=message_idfrominserted
select@index=1
/*挪用COM发送短信*/
begin
EXEC@hr=sp_OACreate{26850DDA-862C-44FF-9232-282937F2CA4B},@objectOUT
if@hr=0
begin
exec@hr=sp_OAMethod@object,SendMsg,NULL,@Content,@PhoneNum,@index,@MessageId
execsp_OADestroy@object
end
end
end
这里的代码能够说是没有成绩,可是也能够说是有很年夜的成绩。
关头就在于组件的SendMsg办法,为何呢?我能够举出几个我实践碰着的成绩来做详细申明。
最次要有2点
第1:此COM组件是不是为历程内组件,组件外部代码是不是充足健壮
第2:创立组件和烧毁组件及组件办法要尽最年夜大概的疾速
我对上述两点做一个申明
假如COM组件为历程内组件的话,意味着此组件被sql-server加载,假如此代码不敷强健,那末,因为组件自己招致的挂起,溃散,会间接影响到全部sql-server,那末情形长短常严峻的,这类毛病,产生一次就足以要了你的小命,假如刚好在客户的脸上爆炸的话……
办理的办法只要如许:起首包管你的组件代码充足健壮,健壮到不克不及再健壮为止。另有就是只管让组件不如果历程内的,假如已是DLL了,那末就交给COM+Catalog来办理。如许就办理了由于组件溃散挂起招致sql-server发生成绩。
其次,要让你的组件的创立、办法挪用、烧毁都快到不克不及再快,要快到几近刹时就完成。不然假如俄然有海量数据出去,你的触发器来不及反应,那你的数据便可能被回滚失落,并且这些数据很主要,那你就等着被Fire吧L5555~~~~~
假如非要用这类办法的话,那末就要完成我下面提到的2点,而且最好启用COM+工具池。假如办法必要很长工夫才干前往,而且没法优化了,那末就把这些办法移进来,把这些举措在别的的程序里做,让COM办法立即前往。
总而言之,言而总之,在体系集成的时分假如几个开辟厂商没有商议好接口,而且都接纳SQL-SERVER数据库,那末关于此类数据的操纵,仿佛用如许的办法就是最好的弥补。
团体以为有点剑走偏锋的感到,固然很厉害,可是不免伤到本人
Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用

因胸联盟 发表于 2015-1-19 21:27:25

而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~

深爱那片海 发表于 2015-1-25 18:42:20

对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。

简单生活 发表于 2015-2-3 13:15:09

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

admin 发表于 2015-2-9 02:09:29

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

若天明 发表于 2015-2-26 18:24:49

varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。

愤怒的大鸟 发表于 2015-3-8 16:32:19

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.

金色的骷髅 发表于 2015-3-16 05:35:22

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?

精灵巫婆 发表于 2015-3-22 20:12:38

每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。
页: [1]
查看完整版本: MSSQL网站制作之关于在SQL-SERVER里挪用COM组件