问题标签 [msdasql]

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 投票
3 回答
2195 浏览

excel - 使用vb6从excel中提取忽略的列

我正在尝试使用 vb6 从 excel (2003) 电子表格中提取值表,其结果需要存储在 (adodb) 记录集中。该表如下所示:

在连接并执行查询“ SELECT * FROM [Sheet1$]”甚至是特定于列的“ SELECT [Option#6] FROM [Sheet1$]”(参见脚注 1)并循环遍历结果时,我得到Null的是 row 的值Name9-- Option.4>Option.6而不是正确的值 5、6 和 7 .似乎与电子表格的连接正在使用“最佳猜测”来确定有效的表限制是什么,并且只考虑了一组行数。

要连接到电子表格,我尝试了两个连接提供程序Microsoft.Jet.OLEDB.4.0MSDASQL遇到了同样的问题。

以下是我使用的连接设置:

仅当行数超过 8 行(不包括列名)时才会出现此问题,并且我已MaxScanRow=0MSDASQL连接设置,但这产生了相同的结果。

我包括的值得注意的项目参考是:

  • MS ActiveX 数据对象 2.8 库
  • MS ActiveX 数据对象 Recordset 2.8 库
  • MS Excel 11.0 对象库
  • MS 数据绑定集合 VB 6.0 (SP4)

在这件事上的任何帮助将不胜感激!

(1) 出于某种原因,当列名中包含小数点时,它被解释为#。


谢谢大家!Schema.ini在尝试从KB155512 onedaywhen的“以编程方式”设置“程序化”的过程中,出色的帖子将我指向了解决方案:

我会鼓励任何有类似问题的人阅读这篇文章和评论,因为从一个人到另一个人的解决方案略有不同。

0 投票
6 回答
100833 浏览

sql-server-2005 - 无法为链接服务器“(null)”初始化 OLE DB 提供程序“MSDASQL”的数据源对象

有一个有趣的问题。我正在通过 Sql2005 中的 OpenRowset 从服务器上的 excel 文件中读取数据。我已经多次运行查询,没有任何问题。我刚出去参加一个快速会议,突然收到错误消息“无法为链接服务器“(null)”初始化 OLE DB 提供程序“MSDASQL”的数据源对象”

我确保这些文件没有在服务器上使用,甚至删除它们并将它们重新复制到服务器上,但我仍然遇到同样的错误。

更新:这似乎只有在我加入来自不同 openrowset 的两个选择时才会发生。如果我单独运行查询,它们仍然可以正常工作。我之前已经完成了加入,没有任何问题。想法?

0 投票
1 回答
5847 浏览

utf-8 - “不支持请求的转换”使用链接服务器和 ODBC

我们的 Web 应用程序将 UTF-8 编码的数据存储在 VARCHAR 字段中。最近,我们使用 DataDirect 的 OpenAccess ODBC 驱动程序为客户提供了通过 ODBC 访问这些数据的权限。这是使用 DataDirect 的 OpenAccess SDK 实现的,它编写了一个 C# .Net 类来与服务交互。我们只允许客户执行 SELECT 查询。我们目前还将结果限制为 100K 行。

这个解决方案真的很好用,除了查询带有一些编码数据的字段对用户来说是乱码,这是可以理解的。在我们服务的下一个版本中,我想为用户提供使用未编码字符串进行查询的能力,然后查看未编码的结果。

我已经通过对传入查询进行 UTF-8 编码解决了这个问题,然后通过标记 VARCHAR 字段返回未编码的结果是 WVARCHAR。这实际上工作得很好。但是,这确实意味着每个 VARCHAR 列都以 WVARCHAR 形式返回,尽管存在(或缺少)Unicode 字符。

此时我们的很多客户都采用了在自己的SQL Server实例上在SSMS中创建链接服务器的方法,这是我首选的连接方法。由于我们的服务将结果限制为 100K 行,我鼓励大家使用 OPENQUERY 来执行查询。不过,似乎我在 SSMS 中的链接服务器的配置中缺少一些东西。当对这些 WVARCHAR 列执行字符串函数(例如 LEFT、RIGHT、SUBSTRING)时,SSMS 返回以下错误:

链接服务器“LOCAL”的 OLE DB 提供程序“MSDASQL”返回消息“不支持请求的转换。”。消息 7341,级别 16,状态 2,第 1 行无法从链接服务器“LOCAL”的 OLE DB 提供程序“MSDASQL”获取列“[MSDASQL].ColName”的当前行值。

这将针对如下查询返回:

LEFT如果我要从此查询中删除该函数,则会返回 FirstName 列,并正确解码,没有错误。

此问题不会影响例如 MS Excel 中的查询。从表面上看,当我通过与 DataDirect 产品接口的 .Net 类进行调试时,字符串似乎受到了它们各自功能的适当影响。我试图更改链接服务器属性上的所有服务器选项,但我没有找到正确的组合。我只是在寻找合适的树在这里吠叫。是我对结果的处理,将它们更改为 WVARCHAR 吗?还是我的 SSMS 链接服务器的某些属性需要更改而我丢失了?

0 投票
1 回答
6333 浏览

odbc - 链接服务器 INSERT、UPDATE 和 DELETE 失败并出现“未知提供程序错误”

对于某个文件(我认为是 AS/400 的远程系统中的一个表),突然 INSERT、UPDATE 和 DELETE 失败。

我们使用的链接服务器是在 SQL Server 中设置的,它使用 ODBC 数据源 (DSN)。数据源是“iSeries Access for Windows 的 ODBC 数据源”。

只有一个表有这个问题。我们可以使用相同的链接服务器在其他表中进行插入和更新,而不会出现任何错误,并且 SELECT 仍然适用于有问题的表。

我们收到 INSERT 和 UPDATE 语句的这些消息(在下面的代码中替换了服务器和数据库名称):

并且 DELETE 给出了这个消息:

如果您对此有任何线索,请不要犹豫,回答这个问题。

谢谢, 安德烈亚斯

0 投票
1 回答
2482 浏览

sql-server-2008 - SQL Server 链接服务器的 Timberline ODBC 错误:无法初始化数据源对象

只是为了奠定基础:

  • 在 64 位 Windows 服务器上,我们安装了 64 位 SQL Server 2008 R2
  • 我们在同一台机器上安装了 32 位版本的 SQL Server Express
  • 使用 32 位 Express 版本,我们成功创建了到 Timberline 数据存储的链接服务器,如下所示:

    /li>

然后返回所有表:

我们还创建了一个用户,如下所示:

此外,在 SSMS 查询窗口中,这在针对主数据库运行时效果很好:

只要我们从 SSMS 中执行查询,一切都会正常工作。但是,当我们启动任何可能尝试访问该链接服务器的第三方工具时,我们就会遇到麻烦。我们有一个小的查询测试工具,允许您输入连接字符串并运行查询。我们使用此连接字符串首先访问主数据库:

该连接有效,我们可以 ping 服务器并查询主数据库。但是,当我们尝试相同的 Timberline 查询(从木材线测试中选择 *...)时,我们遇到了这个错误:

无法为链接服务器“timberline test”初始化 OLE DB 提供程序“MSDASQL”的数据源对象。链接服务器“timberline test”的 OLE DB 提供程序“MSDASQL”返回消息“[Sage Timberline Office][Sage Timberline Office ODBCDriver][DRM 文件库] 帐户名无效。”

需要注意的几件事......用于测试目的:

  • c:\Training\Extended我们打开安全范围的目录上,设置Everyone为完全读写权限
  • 在 Timberline 本身中,我们禁用了安全性(工具 > 安全管理 > 安全设置 > 未选中“打开应用程序安全”)

我不确定在这里还能做什么。任何建议都会很棒。

0 投票
2 回答
356 浏览

sql-server - 与来自 PostgreSQL 的图像 sql server 链接服务器相处

从 PostgreSQL 获取带有 sql server 链接服务器的图像抓取时,我收到以下错误:链接服务器 'bd_acceso_ruisegip' 的 OLE DB 提供程序 'MSDASQL' 返回的数据与列 '[MSDASQL] 的预期数据长度不匹配。fot_imagen '。预期的数据长度(最大)为 255,返回的数据为 38471。

0 投票
1 回答
251 浏览

sql-server - SQL Server 2000 上的 Biztalk Server 备份作业失败

我们在后端有一个使用 SQL Server 2000 的 Biztalk 服务器。Biztalk 为完整备份和 Tran 日志备份创建的备份作业突然开始失败,错误如下。它使用服务帐户。任何有关 MSDASQL 的帮助将不胜感激。

OLE DB 提供程序“MSDASQL”报告了一个错误。身份验证失败。

[SQLSTATE 42000](错误 7399)

用户“(空)”登录失败。原因:未与受信任的 SQL Server 连接关联。

[SQLSTATE 01000](错误 7312)

OLE DB 错误跟踪 [OLE/DB 提供程序 'MSDASQL' IDBInitialize::Initialize 返回 0x80040e4d:身份验证失败。]。

[SQLSTATE 01000](错误 7300)

步骤失败。

0 投票
1 回答
2959 浏览

sql-server - 链接服务器:无法获取 OLE DB 提供程序“MSDASQL”的架构行集“DBSCHEMA_INDEXES”

通过 ODBC 链接服务器连接从 SQL Server Management Studio 的 Teradata 中的某些表中进行选择时

对于某些表格,我收到上述错误,对于其他表格,我没有。似乎是随机的。

错误详情:

链接服务器“TD”的 OLE DB 提供程序“MSDASQL”返回消息“多步 OLE DB 操作生成错误。如果可用,请检查每个 OLE DB 状态值。未完成任何工作。”。消息 7311,级别 16,状态 2,第 3 行无法获取链接服务器“TD”的 OLE DB 提供程序“MSDASQL”的架构行集“DBSCHEMA_INDEXES”。提供者支持该接口,但在使用时返回失败代码。

0 投票
1 回答
960 浏览

openedge - MSDASQL 中带有 WHERE 子句的 SUBSTRING 导致错误

我正在测试 Progress OpenEdge 应用程序中的一项功能,该应用程序将数据加载到数据库表中。我正在测试的表中的许多字段都被我们的应用程序限制为 256 个字符,所以我正在做一些边缘情况测试,尝试加载小于、等于和大于 256 个字符的条目。数据加载后,我查询数据库并验证结果。我正在通过测试程序 TestComplete 为 ODBC 驱动程序使用 OLE DB 提供程序。这是我正在使用的查询:

在我运行测试之前,ODBC 驱动程序对此查询没有任何问题。但是,在我运行它之后,该表中的某些字段有 256 个字符,并且 ODBC 驱动程序对该长度的数据存在问题。我想通过使用来避免这种情况SUBSTRING,但是当我尝试使用这个查询时,我仍然得到一个验证错误:

The specified query is invalid. Database engine reports: [DataDirect][ODBC Progress OpenEdge Wire Protocol driver]Error in row

内容丰富!当表中的数据比 ODBC 喜欢的长时,这就是我通常看到的错误。但奇怪的是,如果我去掉该WHERE子句,查询会验证并返回 30 个字符块中的数据,就像我在SUBSTRING.

发生这种情况是因为我的字段中的字符比 ODBC 驱动程序预期的要多,还是因为与子句有关的其他事情WHERE(语法不正确等?)我该如何解决这个问题?我想在不通过 dbtool 更改设置的情况下执行此操作 - 拥有数据库中的特定设置对我来说很重要,这样我的测试才能准确。

0 投票
1 回答
1329 浏览

mysql - MySQL > SSMS 2012 链接服务器“不支持请求的转换。”

这颗小宝石让我坚持了一段时间,但我仍然没有走得更远。

环境

  • SSMS 2012 SP1(目标)(服务器 2012 64 位)
  • MySQL(来源)
  • 使用 ODBC 5.3 64 位 Unicode 驱动程序的链接服务器

我正在尝试将表从 MySQL 移植到 SSMS。大多数表都可以正常工作......直到我点击了一个> 8000个字符的列。

当我遇到问题时,我试图只选择有问题的 Columnm

运行一个简单的

返回错误

所以我然后尝试

这将返回相同的错误

我完全糊涂了,因为我似乎什至无法查看 SSMS 中的数据,更不用说将其 SELECT 到表中(我有一个脚本,将根据一些基于原始 MySQL 转换的规则转换字段)

正如我所说,对于大多数其他领域来说,这不是问题。

RogueCol 的 MySQL 转换为 varchar(32767)

MSDASQL 提供程序上启用的设置是:

  • 嵌套查询
  • 仅零级
  • 允许进行中
  • 支持“喜欢”

到目前为止,我已经尝试了很多我在各种论坛上“发现”的东西,包括:

  • CASTING, CONVERTING, LEFT, LTRIM(RTRIM()) 在实际调用中。
  • 还尝试将其限制为 TOP 1 记录(LEN = 45,字符串中没有任何空格或外来字符)
  • 设置 ODBC 驱动程序的 ANSI 版本
  • ODBC 驱动程序中的各种设置(允许大结果集、更改字符集、将列限制为 32 位、用空格填充字符等)

我可以呼吁您的集体知识并请求一些进一步的建议,因为这让我发疯了吗?

非常感谢