networking共享上的Excel文件 – 已经由另一个用户独占打开,或者您需要查看和写入其数据的权限

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

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

但是,如果将连接pipe理器指向本地域上的UNCnetworking共享,并从Visual Studio运行包,则会失败,并显示以下消息:

错误:0xC0202009在MyPackage,连接pipe理器“Excel连接pipe理器”:SSIS错误代码DTS_E_OLEDBERROR。 发生OLE DB错误。 错误代码:0x80004005。 OLE DBlogging可用。 来源:“Microsoft Access数据库引擎”Hresult:0x80004005描述:“Microsoft Access数据库引擎无法打开或写入文件”,它已被其他用户专门打开,或者需要查看和写入其数据的权限。 。

错误:0xC020801C在数据stream任务,Excel来源[2]:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接pipe理器“Excel连接pipe理器”失败,错误代码为0xC0202009。 在此之前可能会发布错误消息,更多关于为什么AcquireConnection方法调用失败的信息。

更多信息:

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

通过使用文件path的variables解决它,然后使用该variables作为连接的ConnectionString属性的expression式。 我还在包含pash的variables中加了反斜杠,所以不是\ computer \ share \我使用\\ computer \ share \。

我的猜测是,斜杠解决了这个问题,但是我还没有testing和确定。