问题标签 [openrowset]

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 投票
2 回答
1706 浏览

sql-server - 在存储过程中维护链接服务器上的事务,该存储过程使用 OpenRowSet 命令从 Excel 文件中读取数据

我有一个位于 32 位 sql 服务器上的 Helper DB,并且我添加了一个 64 位的链接服务器,

执行 Excel 导入操作,因为 Jet.oledb 驱动程序在 64 位 sql server 机器上不受支持。

一切正常,但我必须维护链接服务器数据库上发生的插入、更新、删除事务,

我已经在客户端机器和服务器机器上配置了 DTC 服务,

在 sp 顶部添加了 Block 用于存储过程启动时的事务,例如,

BEGIN TRY SET XACT_ABORT ON BEGIN TRANSACTION
BEGIN TRY

设置 XACT_ABORT 开

开始交易

- 代码

- 代码

结束尝试

开始捕捉

IF @@TRANCOUNT<>0 回滚交易

--// 引发错误以登录网站。

声明@ErrorMessage NVARCHAR(4000);

声明@ErrorSeverity INT;

声明@ErrorState INT;

选择

@ErrorMessage = ERROR_MESSAGE(),

@ErrorSeverity = ERROR_SEVERITY(),

@ErrorState = ERROR_STATE();

RAISERROR (@ErrorMessage, -- 消息文本。

但它抛出了一个错误的说法,

无法执行请求的操作,因为链接服务器“(null)”的 OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不支持所需的事务接口。

它在我用来从 Excel 表中读取数据的 Openrowset 函数上引发错误

IE,

SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 5.0;HDR=Yes; IMEX=1;Database=C:\test.xls','SELECT EmployeeID FROM [Sheet$]
where EmployeeID is not null ')

我真的被困住了,因为找不到任何解决方案而变得疯狂,

在此先感谢您的帮助,

0 投票
6 回答
54486 浏览

64-bit - 'Microsoft.ACE.OLEDB.12.0' 64x Sql Server 和 86x Office?

错误:

OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。

我看到的答案是 64 位 Sql Server 和 32 位 Office 之间的冲突。有没有办法将 Excel 上的 openrowset 运行到 Sql Server 中?

0 投票
2 回答
2717 浏览

sql - OPENROWSET 插入空值

我正在使用这个:

但是由于某种原因,尽管原始数据肯定包含值(例如'abc'),但某些值包含null。这种奇怪行为的原因可能是什么。谢谢。

克里斯

0 投票
2 回答
969 浏览

sql-server - 对存储在 ntext 列中的 csv 数据执行查询

假设 CSV 导出的原始文本和相关的时间戳存储在数据库中,其中一条记录相当于一次导出。

有没有人有办法对存储在该字段中的 CSV 文件执行查询,而无需创建与数据库的第二个连接或将数据导出到文件,然后使用 csv 文本驱动程序重新打开它?

假使,假设:

1)您无法在解决方案中将物理文件写入服务器

2)您无法使用 OPENROWSET 再次连接到服务器(服务器、用户名和密码更改)

3) 它必须是 100% SQL 解决方案 - 必须能够作为 SP 运行

4)您一次只需要处理一条记录 - 该解决方案不需要考虑从存储在数据库中的多个 csv 文件中进行选择。

0 投票
2 回答
2137 浏览

sql - t-sql,sql表内连接电子表格

我有一个数据表(AmenityData),该表的一列包含邮政部门,例如 E14 7

我还有一个包含邮政区列表的 Excel 电子表格,例如 E14

我需要从 AmenityData 表中获取所有数据,其中邮政区与邮政部门类似,例如 WHERE [PostalDistricts] + '%' LIKE [PostalSector]。

我目前使用的代码没有出现错误,只是什么都不返回,我知道应该返回很多结果:

我什至不确定您是否可以使用 LIKE 加入表格,我以前从未这样做过。

0 投票
1 回答
549 浏览

sql-server - 从 32 位迁移到 64 位,如何使链接服务器 (sp_addlinkedserver) 工作

这是一些在 32 位机器(SQL server 2005)上运行良好的示例代码,需要更新为 64 位......我知道这是一个常见问题,但无法找到解决方法!

我正在尝试的另一件事是使用 bcp 实用程序从表中创建一个 .fmt 文件,这样我就可以定义正在读取的文件的格式。

任何帮助将不胜感激!

0 投票
1 回答
3535 浏览

sql - BCP 实用程序创建格式文件,将 Excel 数据导入 SQL Server 2008 以进行批量插入

我正在尝试将 Excel 2003 数据导入 SQL Server 2008 的 SQL 表。

尝试添加链接服务器,但收效甚微。

现在我正在尝试检查是否有办法使用 BCP 实用程序通过 OPENROWSET 执行 BULK 插入或 BULK 操作,使用格式文件来获取 Excel 映射。

首先,如何为表格创建格式文件,该文件具有与 Excel 电子表格列不同的命名列?接下来,如何使用此格式文件将数据从位于 C:\Folder1\Excel1.xsl 的文件中导入表 Table1 ?

谢谢你。

0 投票
1 回答
2121 浏览

sql-server - 强制添加/删除链接服务器和正确的语法以将数据从 Excel 导入表

我正在尝试在 Sql server 2008 R2 中创建链接服务器,只是尝试从 Microsoft 下载“64 位版本的 Office 2010 Access AD Engine”exe。

不幸的是,在进行此安装之前,我曾尝试添加链接服务器,但失败了:

(如果您有其他方法,请告诉我这种添加方式是否不正确!)

进行下载后,它给出了该服务器已经存在的消息: “服务器'LinkedServer1'仍有远程登录或链接登录。”

尝试在下载后以相同的方式添加“LinkedServer2”(使用 Excel5.0 作为参数而不是 Excel8.0)。有用!然而,这个旧的链接服务器似乎仍然存在,尽管我已经尝试删除它:

为了确保它确实存在,我写了这个:

以及详细的属性:

如果您发现我做错了什么,请告诉我!我尝试删除“LinkedServer2”,它有效!但是,即使我试图像这样删除相同的链接 server1:

我失败了,同样的信息! “服务器‘LinkedServer1’仍有远程登录或链接登录。”

尝试使用提供程序字符串作为“Excel 5.0”添加链接服务器,并成功添加和删除。


另一个更新: 这又失败了: EXEC(' INSERT INTO Table1 SELECT col1, excel2col, excel3col, Replace(Replace(excel4col, ''"'', '''') FROM OPENROWSET(''Microsoft.Jet.OLEDB.4.0 '',''Excel 5.0;HDR=Yes;Database='+'D:\Folder\Excel1.xls'', [Sheet2$])')

错误:OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。我已将配置更改为:

0 投票
0 回答
1855 浏览

performance - OpenRowSet, OpenQuery, OpenDataSource - which is better in terms of performance

This can be a debatable answer, but I'm looking for the case where a local Excel file needs to be exported to a local SQL Server 2008' table.

Has anyone ever had the chance to check execution time to compare OpenRowSet/OpenQuery/OpenDataSource for a very large file import in SQL Server 2008?

I'm able to use any of the 3 options, and the query can be executed from anywhere. However, the data source (Excel) is in the same server as the SQL Server.

Any pointers would be helpful.

0 投票
1 回答
16608 浏览

sql-server-2005 - 通过 Openrowset 和 Microsoft.ACE.OLEDB.12.0 从 csv 导入(到不同的列)

我想澄清如何将 .csv 中的数据导入具有 3 列的表中(请参阅下面的 CR Ranking.csv)。我的查询:

将结果输出到列:

是否可以通过 Openrowset 将 .csv 中的数据拆分为3列?我认为我错过了 Openrowset 参数中的一些内容,也许这很容易?

是的:我正在使用 Office 2010 中的 64 位 ODBC 驱动程序来获取 .csv、.txt 等的驱动程序......这就是为什么提供程序是:'Microsoft.ACE.OLEDB.12.0',这就是为什么这个连接字符串没有' t似乎工作:

CR 排名.csv:

UPD 1:没有格式文件 可以吗?

UPD 2:我通过格式文件制作 - 这很容易。抱歉打扰了。