网络共享上的Excel文件 - 它已由其他用户独占打开,或者您需要具有查看和写入其数据的权限

时间:2016-09-28 15:29:02

标签: excel visual-studio ssis sql-server-data-tools unc

我正在开发一个使用具有Excel源的数据流任务的SSIS包。连接的提供者是Microsoft.ACE.OLEDB.12.0。

如果我将连接管理器指向计算机上的本地文件并在Visual Studio中运行该程序包,则会成功完成。

但是,如果我将连接管理器指向本地域上的UNC网络共享,并从Visual Studio运行该程序包,则会失败并显示以下消息:

  

错误:MyPackage上的0xC0202009,连接管理器" Excel连接管理器":SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:" Microsoft Access数据库引擎" Hresult:0x80004005说明:" Microsoft Access数据库引擎无法打开或写入文件''。它已由其他用户专门打开,或者您需要获得查看和写入其数据的权限。"。

     

错误:数据流任务中的0xC020801C,Excel源[2]:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接管理器" Excel连接管理器"失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。

更多信息:

  • UNC共享中的文件与我的本地文件相同。
  • 运行程序包之前,UNC共享中的文件未打开。
  • 我的域用户(我用来运行Visual Studio)具有UNC共享的所有者权限级别。此外,每个人都拥有UNC共享的读取权限级别。
  • Run64BitRuntime设置为False(可能不相关)。
  • 我在本地运行Visual Studio。

1 个答案:

答案 0 :(得分:1)

通过使用文件路径的变量然后使用该变量作为连接的ConnectionString属性的表达式来解决它。 我还将包含pash的变量中的反斜杠加倍,所以代替\ computer \ share \我使用了\\ computer \ share \。

我的猜测是斜线解决了问题,但我还没有测试并确定。