问题标签 [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.
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.).
谷歌搜索也没有帮助
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 的文件夹的过程
导出代码
有谁知道可能导致此错误的原因是什么?
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。我该如何解决?
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(系统找不到指定的文件。)。
有人可以建议一些解决方法或配置提示吗?
sql-server - Ole 自动化过程返回 null
我有以下问题。在我们的服务器上运行下面的 sql 它会返回预期的结果。在另一台服务器上运行相同,它不会返回任何值。
做了以下事情:
在第二个服务器中,@input 返回 null。有一个代理可以访问服务器上的站点,它使用 sql server 2008 运行。
任何想法为什么是空值?
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 代码以帮助调试问题。
c++ - 如何调用 GetAltMonthNames 来填充一个安全的外国语言环境月份字符串数组?
我看到了这个函数,想知道如何调用它。我可能想编写一个组件并将这个函数导出到 COM 客户端,所以我想填充一个安全的字符串数组(其他自动化类型也可以)。所以我想利用 ATL 智能类。这就是我目前所拥有的,一个控制台应用程序。
excel - 通过使 Excel 成为 OLE 对象来打开 Excel 电子表格
我尝试使用以下代码打开我在 Excel 中创建的电子表格。它运行,但弹出窗口不断出现,说我的文件已被删除或移动。该文件肯定仍然存在。我试过用其他名称创建新文件。它们都不起作用。
lua - Lua wireshark解剖器以OLE自动化格式提取时间戳
我正在 LUA 中编写一个简单的 UDP 解析器来解码包含编码为 OLE 自动化日期的时间戳的数据包。编码产生一个 8 字节的数据模式:
解码为 43871.90848539352 = '2/10/2020 9:48:13 PM'。在 C# .NET 中,这是通过 DateTime.ToOADate() 方法(工作正常)。
这是我的简化解析器,它“解码”一条仅包含时间戳的 8 字节消息:
在测试数据包中,我发送了两次时间戳,第二次是字节顺序相反以测试字节序问题(“抓住稻草”方法)。数据包数据为:
两个检索到的时间戳是
“正确”的时间戳应该是
看起来带有 base.UTC 的 ProtoField.absolute_time 并不是我想要的。所以我的问题是
- 是否有 ProtoField 选项可以以不包括小数秒的格式正确提取此时间戳?
- 如果不是,我将如何按字节提取日期/时间并进行计算以手动格式化正确的日期?