有谁知道ole文档是怎么回事

有谁知道ole文档是怎么回事,第1张

ole文档是包含OLE对象数据的文档。

OLE可以用来创建复合文档,复合文档包含了创建于不同源应用程序,有着不同类型的数据,因此它可以把文字、声音、图像、表格、应用程序等组合在一起。链接对象必须使用对象文件,因为链接对象在文档中保存。如果应用程序从已存在的文档文件中创建嵌入对象,也要使用OLE文档。

扩展资料:

OLE技术。OLE 不仅是桌面应用程序集成,而且还定义和实现了一种允许应用程序作为软件“对象”(数据集合和操作数据的函数)彼此进行“连接”的机制,利用这种技术可开发可重复使用的软件组件(COM)。

OLE从多媒体借鉴而来,是Windows的一组服务功能,提供了一种以源于不同应用软件的信息建立复合文档的强有力方法。在对象连接和嵌入系统中,对象可以是几乎所有的数据类型,例如文字、点阵图像和矢量图形,甚至于声音、注解和录像剪辑等均可。

OLE,指的就是OLE自动化,是不同应用程序之间进行通讯的一个标准。

OLE自动化的工作方式是:通讯被动方(OLE服务器)应用程序向通讯主动方(OLE客户机)应用程序提供一个以上可供其调用的OLE自动化对象类型,OLE客户机通过引用这些对象实现对OLE服务器的调用,然后通过设置对象的属性和使用对象的方法操纵OLE服务器应用程序,完成两者之间的通讯。

Transact-SQL 参考

sp_OACreate

在 Microsoft® SQL Server™ 实例上创建 OLE 对象实例。

语法

sp_OACreate progid, | clsid,

objecttoken OUTPUT

[ , context ]

参数

progid

是要创建的 OLE 对象的程序标识符 (ProgID)。此字符串描述该 OLE 对象的类,其形式如下:

'OLEComponent.Object'

OLEComponent 是 OLE 自动化服务器的组件名称,Object 是 OLE 对象名。指定的 OLE 对象必须有效并且必须支持 IDispatch 接口。

例如,SQLDMO.SQLServer 是 SQL-DMO SQLServer 对象的 ProgID。SQL-DMO 的组件名称为 SQLDMO,SQLServer 对象是有效的,并且同所有 SQL-DMO 对象一样,SQLServer 对象支持 Idispatch。

clsid

是要创建的 OLE 对象的类标识符 (CLSID)。此字符串描述该 OLE 对象的类,其形式如下:

'{nnnnnnnn-nnnn-nnnn-nnnn-nnnnnnnnnnnn}'

指定的 OLE 对象必须有效并且必须支持 IDispatch 接口。

例如,{00026BA1-0000-0000-C000-000000000046} 是 SQL-DMO SQLServer 对象的 CLSID。

objecttoken OUTPUT

是返回的对象令牌,并且必须是数据类型为 int 的局部变量。该对象令牌用于标识所创建的 OLE 对象,并将在调用其它 OLE 自动化存储过程时使用。

context

指定新创建的 OLE 对象要在其中运行的执行上下文。如果指定,那么此值必须为下列值之一:

1 = 仅为进程内 (.dll) OLE 服务器

4 = 仅为本地 (.exe) OLE 服务器

5 = 进程内 OLE 服务器和本地 OLE 服务器均可

如果未指定,其默认值为 5。此值将在调用 CoCreateInstance 时作为 dwClsContext 参数传递。

若允许使用进程内 OLE 服务器(通过使用上下文值 1 或 5 或者不指定上下文值),该服务器将可以访问 SQL Server 拥有的内存和其它资源。进程内 OLE 服务器可能会破坏 SQL Server 的内存或资源并导致不可预知的结果,如 SQL Server 访问违规。

当上下文值指定为 4 时,本地 OLE 服务器不能访问任何 SQL Server 资源,因而不能破坏 SQL Server 的内存或资源。

说明 此存储过程的参数按位置指定,而不是按名称指定。

返回代码值

0(成功)或非零数字(失败),是由 OLE 自动化对象返回的 HRESULT 的整数值。

有关 HRESULT 返回代码的更多信息,请参见 OLE 自动化返回代码和错误信息。

注释

已创建的 OLE 对象在 Transact-SQL 语句批处理结束时会自动释放。

权限

只有 sysadmin 固定服务器角色的成员才能执行 sp_OACreate。

示例

A. 使用 Prog ID

下面的示例通过使用 SQL-DMO SQLServer 对象的 ProgID 创建该对象。

DECLARE @object int

DECLARE @hr int

DECLARE @src varchar(255), @desc varchar(255)

EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @object OUT

IF @hr <>0

BEGIN

EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

RETURN

END

B. 使用 CLSID

下面的示例通过使用 SQL-DMO SQLServer 对象的 CLSID 创建该对象。

DECLARE @object int

DECLARE @hr int

DECLARE @src varchar(255), @desc varchar(255)

EXEC @hr = sp_OACreate '{00026BA1-0000-0000-C000-000000000046}',

@object OUT

IF @hr <>0

BEGIN

EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

RETURN

END

请参见

使用 OLE 自动化存储过程进行数据类型转换

如何创建 OLE 自动化对象 (Transact-SQL)

如何调试自定义 OLE 自动化服务器 (Transact-SQL)

OLE 自动化脚本示例


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/433578.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-28
下一篇2023-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存