【问题标题】:SSIS Package stopped working with Error code: 0x80004005SSIS 包停止使用错误代码:0x80004005
【发布时间】:2018-01-22 20:45:51
【问题描述】:

我在去年 12 月得到了这个 SSIS 包。它只在星期五早上运行。上周五它失败并显示以下错误消息:

包:错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。 OLE DB 记录可用。来源:“Microsoft Access 数据库引擎”Hresult:0x80004005 描述:“Microsoft Access 数据库引擎无法打开或写入文件 '\\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx'。它已被另一个独占打开用户,或者您需要查看和写入其数据的权限。”。

我检查了其他几个类似的问题,但他们没有回答我的问题。我已检查以确保没有人打开该文件。

有问题的文件是一个模板,它被复制然后填充,所以没有人应该打开它,开始。

我尝试将RetainSameConnection 更改为True,但没有区别。我已经在调试模式下运行它,它工作正常。

有人知道如何清除它以使其再次自动运行吗?

更新

经过更多测试,文件似乎正在获取数据,但没有被复制。这是我的设置:

  • 我有一个File System Task,它从我的模板中复制了一个模板 文件夹到我的导出文件夹。
  • 然后我有一个Data Flow Task
    • 从运行 SQL 脚本以提取数据的 OLE DB 源开始
    • 运行Data Conversion 将几个字段更新为正确的格式
    • Excel Destination 用于输出。 (这是复制到导出文件夹的模板
    • 还有一个Flat File Destination,以防万一出现错误
  • 然后使用另一个 File System Task 返回控制流,这个将文件从导出文件夹移动到共享驱动器上的最终目的地

当我从 VS 2015 运行它时,它可以正常工作并创建文件。当我从 SQL 代理作业运行它时,它会失败并显示上述错误消息。我唯一能想到的是,在Data Flow Task 中,Excel Destination 没有在最终的File System Task 尝试复制文件之前释放文件?但如果是这样的话,为什么现在才开始发生呢?

【问题讨论】:

  • 您是否使用任何脚本组件将数据写入 Xlsx?如果是,则确保关闭文件。
  • @Kalyan 我没有使用脚本。这是在 Visual Studio 2015 中构建的,然后保存为 .dtsx 包。
  • 也许有人在你不注意的情况下更改了权限。很容易检查。登录或以该用户身份运行,看看您是否可以打开该文件。要尝试的另一件事是复制文件并尝试打开副本。最后用windows工具确认没有人打开
  • @Nick.McDermaid 没有其他人可以更改权限,我是管理员,没有其他人有权限这样做。我将尝试复制文件的其他建议,看看会发生什么。

标签: sql-server excel ssis etl


【解决方案1】:

我认为文件路径有问题,因为您可以看到文件路径以一个反斜杠开头:

\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx

如果它在网络上,也许应该以双反斜杠\\开头

\\ServerShare\IT\Reports\Export Templates\YoderReport.xlsx

或者分区丢失-->路径不完整

检查文件路径提供给连接管理器的方式(如果您使用表达式)


同样基于这个microsoft article,有两种可能的原因:

  1. 您必须具有读取指定文件中数据的权限才能查看其数据。要更改您的权限分配,请咨询您的系统管理员或表或查询的创建者。
  2. 您试图以独占方式打开指定的文件,但其他用户已打开该文件。

【讨论】:

  • 文件路径的开头确实有“\\”,我只是没有在引用的文本中对其进行转义。我确实正确设置了权限,因为这运行了将近一个月。我在其他任何地方都找不到该文件的任何其他副本,这会阻止我再次打开它。
【解决方案2】:

看起来像是访问问题。确保代理服务帐户正在以对网络共享路径的完全权限运行。也许您可以尝试在代理服务器上使用您的凭据。

另外,请确保您的 Excel 目标连接字符串支持 .xlsx。

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\path\xxx.xlsb;Extended Properties="Excel 12.0;HDR=YES";

将“Excel 12.0”更改为“Excel 12.0 Xml”将告诉提供程序改为以 .xslx 格式输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多