【问题标题】:SQL Server 2005 into Excel with OPENROWSET MSG 7399/7303使用 OPENROWSET MSG 7399/7303 将 SQL Server 2005 转换为 Excel
【发布时间】:2012-03-27 06:51:15
【问题描述】:

我对这个问题的耐心已经结束。我通过 SSMS 或代理运行作业,这些作业在上周之前一直运行良好,将表格/视图中的数据插入到各种 Excel 文件中。

最近,作业/代码一直在运行,但从未完成......这些作业过去只需要 15-25 秒即可完成,但现在永远不会结束。我已经在一张新表上测试了下面的代码,它会立即运行!我遇到的错误也没有帮助,我在 Google 中找到的解决方案没有帮助或已经设置好了。

有什么想法会导致 openrowset 导出只是轰炸而不执行其工作?

我通常运行的有效代码:

INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;Database=C:\Automation\DYNAMIC\Output\File.xlsx;',
'SELECT * FROM [Data$]')

SELECT *
FROM [REPORTING].[dbo].[tbl_table]

当前错误信息:

消息 7399,第 16 层,状态 1,第 1 行
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”报告错误。提供者没有提供任何信息 关于错误。
消息 7303,第 16 级,状态 1,第 1 行
无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。

系统:

  • Windows XP 32 位上的 SQL Server 2005 32 位

更新/编辑信息:

  • Excel 工作表包含单独选项卡上的函数或从 [Data$] 选项卡推断数据的图表(如果有任何帮助)

  • 我创建了一个全新的工作表并测试了我的插入查询,它运行良好

  • 源文件最初不是在服务器上创建的,而是通过 Share Drive 传输的(不过我认为这无关紧要)

感谢任何帮助!

谢谢

【问题讨论】:

  • 您可能已经完成了所有这些,但是: 1. 失败的文件名是否包含空格字符? 2.尝试重命名失败的文件,创建一个与失败相同的路径和名称的“新工作表”,然后插入。那样有用吗? (如果是这样,文件的内容很可能是问题。) 3. 这是否适用于明确的列名列表,而不是 SELECT *? 4. 如果您“另存为..”其中一个失败的 Excel 文件以新名称命名,您可以插入其中吗?您是否打开了失败的 Excel 文件并非常仔细地检查了 Data$ 范围(当然,在查询之前将其关闭)? 6. SELECT from OPENROWSET 有效吗?
  • @Steve - 感谢您的回复。 1)不,它有下划线来表示空格。 2)不工作 3)不 4)不,是的 6)不,它只是永远执行。然而,我创建了一个全新的 test.xlsx,以 [Sheet1$] 作为目标,插入了我想要的另一张表的相同数据,它立即工作!我将附加上述问题,但也放在这里 - 它与我有一些带有图表的选项卡有什么关系吗?我对另一个没有图表的文件(不同的目录)也有同样的问题,只有一些功能。那一个肯定以前工作过。在这里迷路
  • 更多猜测:为了验证 SQL Server 甚至可以“看到”问题文件,这会返回结果吗? select * from openrowset(BULK N'C:\Automation\DYNAMIC\Output\File.xlsx',single_blob) as T 我仍然不清楚什么起作用和不起作用。对于前面的#2,您说重命名坏文件并创建一个新文件(但我不清楚“工作表”与“文件”)不起作用。以下是正确的(如果不是,您能否澄清之前#2中失败的原因)? a) 您可以插入全新的 C:\Automation\DYNAMIC\Output\test.xlsx 的 Sheet1$,但 b) 您不能插入带有问题名称的全新文件。
  • 是的 Blob 结果与 BULK 一起返回。 #2) 我可以插入到具有不同文件名的全新文件中。我无法插入具有相同名称但作为新工作簿的文件。而且我无法插入原始坏工作簿的新工作表。我猜SQL出于某种原因阻止了这些文件?至少可以说很有趣......但是......的痛苦......
  • 听起来整个问题都出在文件名上。从您所说的来看,使用不同的文件名没有问题,并且现有文件名总是有问题(无论 .xlsx 文件是新的还是旧的)。由于 BULK 返回数据,这听起来像是 ACE 驱动程序的一个奇怪错误。也许文件名中的下划线有问题?解决方案是对 Excel 文件使用不同的命名约定。希望这是您的选择。

标签: sql-server sql-server-2005 export-to-excel openrowset


【解决方案1】:

我也遇到过同样的问题,似乎要纠正它是重新启动 SQLServer 服务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-22
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    相关资源
    最近更新 更多