Transact-SQL 包括多个系统存储过程,这些存储过程允许在 Transact-SQL 批处理、存储过程和触发器中引用 OLE 自动化对象。 这些系统存储过程以扩展存储过程的形式运行,通过存储过程执行的 OLE 自动化对象以扩展存储过程运行的方式在 SQL Server 数据库引擎实例的地址空间中运行。
OLE 自动化存储过程使得 Transact-SQL 批处理能够引用 SQL-DMO 对象和自定义 OLE 自动化对象,例如暴露出 IDispatch 接口的对象。 使用 Microsoft Visual Basic 创建的自定义进程内 OLE 服务器必须具有Class_Initialize和Class_Terminate子例程的错误处理程序(使用 On Error GoTo 语句指定)。 Class_Initialize和Class_Terminate子例程中的未经处理的错误可能会导致不可预知的错误,例如数据库引擎实例中的访问冲突。 还建议使用其他子例程的错误处理程序。
在 Transact-SQL 中使用 OLE 自动化对象的第一步是调用 sp_OACreate 系统存储过程,以在数据库引擎实例的地址空间中创建对象的实例。
创建对象的实例后,调用以下存储过程来处理与对象相关的属性、方法和错误信息:
sp_OAGetProperty 获取属性的值。
sp_OASetProperty 设置属性的值。
sp_OAMethod 调用方法。
sp_OAGetErrorInfo 获取最新的错误信息。
当不再需要该对象时,调用 sp_OADestroy 以解除分配通过使用 sp_OACreate创建的对象实例。
OLE 自动化对象通过属性值和方法返回数据。 sp_OAGetProperty 和 sp_OAMethod 以结果集的形式返回这些数据值。
OLE 自动化对象的作用域是一个批处理。 对对象的所有引用都必须包含在单个批处理、存储过程或触发器中。
当它引用对象时,SQL Server OLE 自动化对象支持将引用的对象遍历到它包含的其他对象。 例如,使用 SQL-DMO SQLServer 对象时,可以对该服务器上包含的数据库和表进行引用。
相关内容
Ole Automation Procedures Server 配置选项
sp_OAGetProperty(Transact-SQL)
sp_OASetProperty(Transact-SQL)