问题标签 [ole-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1530 浏览

sql-server - SQL SERVER sp_OACreate 在执行 128 行后抛出错误“ODSOLE 扩展过程”

我需要根据正则表达式从输入中提取匹配的文本。由于 SQL Server 中没有对正则表达式的内置支持,我编写了以下 UDF 来完成这项工作。

我的消费方式如下:-

每次成功执行128 次,然后生成我已由sp_OAGetErrorInfo捕获的错误ODSOLE 扩展过程。知道是什么原因造成的吗?

在此处输入图像描述

0 投票
0 回答
593 浏览

sql-server - SQL Server 2017 Linux Docker Ole 自动化问题

我已经在 Linux Docker 上安装了 SQL Server Developer Edition

当运行这个

我得到错误:

Msg 17750, Level 16, State 0, Procedure sys.sp_OACreate, Line 1 Could not load the DLL odsole70.dll, or one of the DLLs it references. Reason: 2(The system cannot find the file specified.).

谷歌搜索也没有帮助

0 投票
1 回答
7625 浏览

sql-server - 从 SQL Server 导出 Blob 并将其保存为文件

我正在尝试将数据从 SQL Server 导出到文件。数据是 docs、pdf、jpegs、xls 和 sms。我找到了一个可以这样做的脚本,但是每当我运行它时,我都会收到一条非描述性错误消息

C:\ExtractBlob\folder1\folder2\folder3 Msg 50000,级别 16,状态 1,过程 CreateFolder,第 30 行 [批处理开始第 8 行]

我的代码如下:

创建用于存储 Blob 的文件夹的过程

导出代码

有谁知道可能导致此错误的原因是什么?

0 投票
1 回答
524 浏览

c# - 从 COM 库转换到接口在 IIS 内的第 16 个托管线程上失败(InvalidCastException,WinRT 发起错误 0x80040155)

我主要是为遇到这个奇怪问题的其他人发布这个,如果有人能解释为什么 IIS/Cassini 是一个魔鬼。

在大多数情况下,我们可以成功地将 ODL 中定义的 Dispatch 对象转换为

到如下界面

以上都是在注册的 C++ OLE/COM 自动化 DLL 中实现的,并且类型库用于创建一个互操作 DLL 并且它是 regasm'd。

所以在 C# 中我们可以成功地反复调用

没有任何麻烦。直到....

我们发现,如果我们打开一个网页,转到服务器上的一个 URL,关闭浏览器并重复 16 次(Cassini 或 IIS),当创建第 16 个托管线程时,突然转换失败,并出现以下基本异常:

测试时

演员突然返回 null 。但是对象本身仍然有效并且可以被询问,只是不再投射。

为什么它在第 16 个线程上失败,并且事先工作正常?Ps 一切都设置为 STA。我该如何解决?

0 投票
0 回答
1158 浏览

sql-server - SQL Server 2017 Ubuntu Ole 自动化程序

我在 Ubuntu 16.04 上安装并配置了 SQL Server 2017,并获得了开发者许可。安装工作正常,我也可以使用 Management Studio 连接到它,并从.bak文件中恢复数据库。

但我找不到任何解决方案或替代使用 Ole 自动化程序。

启用命令

返回此响应:

配置选项“显示高级选项”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。
配置选项“Ole Automation Procedures”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。

但是当我尝试使用sp_oacreate

我得到 0 作为@ret值,这意味着它可以,但在输出时也收到错误消息:

无法加载 DLL odsole70.dll 或其引用的 DLL 之一。原因:2(系统找不到指定的文件。)。

有人可以建议一些解决方法或配置提示吗?

0 投票
2 回答
437 浏览

sql-server - Ole 自动化过程返回 null

我有以下问题。在我们的服务器上运行下面的 sql 它会返回预期的结果。在另一台服务器上运行相同,它不会返回任何值。

做了以下事情:

在第二个服务器中,@input 返回 null。有一个代理可以访问服务器上的站点,它使用 sql server 2008 运行。

任何想法为什么是空值?

0 投票
0 回答
539 浏览

arrays - 为什么在尝试分配一个变体时,某个非 IDispatch 公开对象类型的数组,而是分配了数组指针?

概括

在为某些对象类型声明数组后,该类型不使用派生COM接口的IDispatch接口(&因此未正确设置以启用 [OLE] Automation的后期绑定技术),尝试根据我的期望,将数组分配给Variant变量不起作用。

具体来说,似乎发生的是指向数组的整数指针被分配给Variant变量,而不是数组的副本。

谁能解释这种行为?它是 VBA 7.1 语言的标准行为吗?[EDIT-A1]是不是 VBA 的Variant类型不能处理这样的数组?[编辑-A2]


[EDIT-A1] -目前(2019 年 4 月 6 日),它看起来像是一个错误。
[EDIT-A2] -不,因为参数的内部过程参数ByRef Variant可以正确指向此类数组,如果此类数组作为此类参数的值传递。



背景

有关似乎正在发生的事情的更多详细信息

在检查了各种内存地址和指针之后,似乎正在发生的事情是,当将此类数组分配给Variant变量时,指向数组的“VB 安全数组指针”Long的(或LongPtr)指针被分配了。与 VBA 语言规范中记录的数组复制行为相反,这是预期的行为。在查看了关于 VB 数组及其内存布局的 VB6 文档(存储在此处)后,我推断出这种指针分配正在发生。

我对以前是否记录过问题的研究

我搜索了互联网、Office VBA 参考文档和VBA 语言规范,以查看其他人是否记录了此问题。我发现这个问题可能已经部分记录的唯一地方是在此处发布的 Stack Overflow 答案中。不幸的是,这篇文章并没有对这个问题说太多。

我已经测试过这个问题的特定数组类型

我在以下对象类型的数组中遇到了这个问题,这些对象类型使用的接口不是来自IDispatch

  • stdole.IUnknown *
  • stdole.IFont
  • mscoree.CorRuntimeHost
  • mscorlib.AppDomain
  • mscorlib.Type

* 来自stdole2.tlb. † 来自.NET 框架v4.0.30319
的 COM 类型库。

更多关于使用非派生接口的对象类型IDispatch

这样的对象类型就是vbDataObject类型。不幸的是,当前关于vbDataObject常量的 VBA 文档是不准确的。我正在更新文档,您可以在此处查看我对常量的更新定义。

[编辑 - COM 规范链接已删除,因为它不再相关。]


关于其他对象类型的数组

类型数组vbObject(支持 [OLE] 自动化后期绑定技术的 COM 对象类型)似乎以Variant直接和预期的方式分配给变量 -数组被复制并直接分配

使用 VBE 手表检查此类数组时,VBE 曾经崩溃

一个可能相关的问题与一个错误有关,当 VBE监视表达式被放置在一个类型的数组上时,该数组使用的接口不是IDispatch. 用于导致 VBE 意外崩溃的错误。微软似乎已在上个月修复了此错误。

软件版本

‡ 版本全文为“Retail 7.1.1088”——最新版本。
§ 更具体地说,最新版本和内部版本(2019 年 6 月 3 日发布,版本 1905,内部版本 11629.20214),以及更早的内部版本号 11629.20196 和 11601.20204(首次发布于 2019 年 5 月 14 日)。
ver.exe程序打印“Microsoft Windows [版本 6.3.9600]”

代码

代表

我希望存储数组MyVariant的副本。MyArray

相反,在 32 位版本的 VBA 中,MyVariant存储一个Long看起来是指向MyArray.

调试问题

单击此处 获取 VBA 代码以帮助调试问题。

0 投票
1 回答
30 浏览

c++ - 如何调用 GetAltMonthNames 来填充一个安全的外国语言环境月份字符串数组?

我看到了这个函数,想知道如何调用它。我可能想编写一个组件并将这个函数导出到 COM 客户端,所以我想填充一个安全的字符串数组(其他自动化类型也可以)。所以我想利用 ATL 智能类。这就是我目前所拥有的,一个控制台应用程序。

0 投票
1 回答
120 浏览

excel - 通过使 Excel 成为 OLE 对象来打开 Excel 电子表格

我尝试使用以下代码打开我在 Excel 中创建的电子表格。它运行,但弹出窗口不断出现,说我的文件已被删除或移动。该文件肯定仍然存在。我试过用其他名称创建新文件。它们都不起作用。

0 投票
1 回答
516 浏览

lua - Lua wireshark解剖器以OLE自动化格式提取时间戳

参考:lua 中的 OLE 自动化日期

我正在 LUA 中编写一个简单的 UDP 解析器来解码包含编码为 OLE 自动化日期的时间戳的数据包。编码产生一个 8 字节的数据模式:

解码为 43871.90848539352 = '2/10/2020 9:48:13 PM'。在 C# .NET 中,这是通过 DateTime.ToOADate() 方法(工作正常)。

这是我的简化解析器,它“解码”一条仅包含时间戳的 8 字节消息:

在测试数据包中,我发送了两次时间戳,第二次是字节顺序相反以测试字节序问题(“抓住稻草”方法)。数据包数据为:

两个检索到的时间戳是

“正确”的时间戳应该是

看起来带有 base.UTC 的 ProtoField.absolute_time 并不是我想要的。所以我的问题是

  1. 是否有 ProtoField 选项可以以不包括小数秒的格式正确提取此时间戳?
  2. 如果不是,我将如何按字节提取日期/时间并进行计算以手动格式化正确的日期?