欢迎来到天天文库
浏览记录
ID:20987461
大小:63.50 KB
页数:6页
时间:2018-10-18
《用自动服务扩展sql server功能--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用自动服务扩展SQLServer功能>> SQLServer的T-SQL编程语言在数据存储和恢复方面功能强大,但在与SQLServer数据库之外的系统交互方面则功能较弱。然而,我们可以通过SQLServer内置的自动操作环境来克服这个限制,SQLServer内置的自动操作环境可以使用户在存储过程中自动操作对象。 在SQLServer7.0和SQLServer6.5中提供了7个扩展的存储过程,可以通过自己开发的或Office等现成的对象扩展SQLServer的功能。SQLServer还提供了一种错误处理机
2、制,可以把出错信息写到SQL代理日志中。利用自动化操作服务,还可以把SQLServer与微软的ExchangeServer、IndexServer和其他可以通过自动化操作服务控制其他软件进行集SQLServer6.5引进了对象自动操作环境,它最初被称作OLE。随着时间的变迁对象操作的名称也有所变化,然而与SQLServer6.5相比,SQLServer7.0中的自动操作环境没有改变,因此微软的文档中仍然把这一功能称作OLE操作而不是操作,在查阅SQLServer在线手册(BOL)时尤其需要注意这一点。下面我
3、们来讨论如何使用SQLServer的自动操作存储过程以及自动操作如何帮助我们解决现实的编程问题。 操作的细节 表1列出了SQLServer中的7个用于操作的扩展存储过程。当自动操作一个对象时,需要首先通过调用sp_OACreate建立一个对象的实例,然后通过一系列的sp_OAGetProperty、sp_OASetProperty和sp_OAMethod调用完成需要完成的任务,在完成对对象的操作后,还需要调用sp_OADestroy释放该对象。在详细地研究每个储存过程时,请注意二个很重要的问题。 第一
4、,必须提供调用的所有参数,因为自动操作功能不支持有名参数,如果不能使用一个详细的参数,需要向它传递一个NULL作为占位符;第二,每个调用返回一个整数类型的HRESULT,如果调用成功则该值为0。在后面,我们将讨论如何处理返回值为非。 存储过程描述 sp_OACreate建立自动操作对象的一个实例 sp_OADestroy释放一个对象的实例 sp_OAGetErrorInfo从其他过程返回的HRESULT中获得错误描述信息 sp_OAGetProperty把一个对象的属性存储在结果集或局部变量中
5、sp_OASetProperty改变一个对象属性的值 sp_OAMethod执行对象的方法,向方法传递参数,并得到返回值 sp_OAStop关闭SQLServer的自动操作环境 表1:SQLServer的自动操作存储过程 操作必须以调用sp_OACreate存储过程开始,语法格式如下所示: sp_OACreateprogid
6、clsid,objecttokenOUT.PUT, [context:] 第一个参数是程序ID(ProgID━━一个应用程序名.类名形式的字符串,例如: Excel.A
7、pplication,)或者一个类ID(CLSID━━一个nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn形式的全球唯一的ID),它标明你希望创建实例的对象。 在可能的情况下,我建议使用ProgID参数,因为它易于输入和记忆。你会发现,只有很少的希望自动操作的对象没有ProgID,如果偶尔碰上这样的对象,就只有使用CLSID了。第二个变量objecttoken也是一个整型变量,一个对象的标记是指向SQLServer创建的对象的句柄和指针,我们需要在随后的对对象的自动操作中使用这个返
8、回的对象标记来确定这个对象。最后的context变量是可选的,可以强迫创建的对象使用某种自动操作的机制。如果其值为1,则要求对象在一个ActiveXDLL文件中;值为4,则要求对象在ActiveXEXE服务器中;如果是缺省的值5,则可以使用任一自动操作。在这里我们建议使用缺省的选项,而无须为context参数提供一个恰当的值。下面调用op_OACreate的命令将创建一个微软的Excel程序的实例:DeclareObjectintDeclareRetValintExecRetVal=sp_OACreate&
9、#39;Excel.Application',ObjectOUTPUT 在创建一个对象后,需要获取其一些属性。要得到这些属性,可以通过下面的语法调 sp_OAGetProperty: sp_OAGetPropertyobjecttoken,propertyname[,propertyvalueOUTPUT][,第一个参数objecttoken的值就是由sp_OACreate返回的值,参数Proper
此文档下载收益归作者所有