问题标签 [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.
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 ')
我真的被困住了,因为找不到任何解决方案而变得疯狂,
在此先感谢您的帮助,
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 中?
sql - OPENROWSET 插入空值
我正在使用这个:
但是由于某种原因,尽管原始数据肯定包含值(例如'abc'),但某些值包含null。这种奇怪行为的原因可能是什么。谢谢。
克里斯
sql-server - 对存储在 ntext 列中的 csv 数据执行查询
假设 CSV 导出的原始文本和相关的时间戳存储在数据库中,其中一条记录相当于一次导出。
有没有人有办法对存储在该字段中的 CSV 文件执行查询,而无需创建与数据库的第二个连接或将数据导出到文件,然后使用 csv 文本驱动程序重新打开它?
假使,假设:
1)您无法在解决方案中将物理文件写入服务器
2)您无法使用 OPENROWSET 再次连接到服务器(服务器、用户名和密码更改)
3) 它必须是 100% SQL 解决方案 - 必须能够作为 SP 运行
4)您一次只需要处理一条记录 - 该解决方案不需要考虑从存储在数据库中的多个 csv 文件中进行选择。
sql - t-sql,sql表内连接电子表格
我有一个数据表(AmenityData),该表的一列包含邮政部门,例如 E14 7
我还有一个包含邮政区列表的 Excel 电子表格,例如 E14
我需要从 AmenityData 表中获取所有数据,其中邮政区与邮政部门类似,例如 WHERE [PostalDistricts] + '%' LIKE [PostalSector]。
我目前使用的代码没有出现错误,只是什么都不返回,我知道应该返回很多结果:
我什至不确定您是否可以使用 LIKE 加入表格,我以前从未这样做过。
sql-server - 从 32 位迁移到 64 位,如何使链接服务器 (sp_addlinkedserver) 工作
这是一些在 32 位机器(SQL server 2005)上运行良好的示例代码,需要更新为 64 位......我知道这是一个常见问题,但无法找到解决方法!
我正在尝试的另一件事是使用 bcp 实用程序从表中创建一个 .fmt 文件,这样我就可以定义正在读取的文件的格式。
任何帮助将不胜感激!
sql - BCP 实用程序创建格式文件,将 Excel 数据导入 SQL Server 2008 以进行批量插入
我正在尝试将 Excel 2003 数据导入 SQL Server 2008 的 SQL 表。
尝试添加链接服务器,但收效甚微。
现在我正在尝试检查是否有办法使用 BCP 实用程序通过 OPENROWSET 执行 BULK 插入或 BULK 操作,使用格式文件来获取 Excel 映射。
首先,如何为表格创建格式文件,该文件具有与 Excel 电子表格列不同的命名列?接下来,如何使用此格式文件将数据从位于 C:\Folder1\Excel1.xsl 的文件中导入表 Table1 ?
谢谢你。
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”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。我已将配置更改为:
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.
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:我通过格式文件制作 - 这很容易。抱歉打扰了。