环境描述
我有一个从asp.net执行的SSIS任务,该包通过UNC路径从excel文件获取数据,并将数据放入sql server databaase。我已将SSIS部署到文件系统,它具有Windows身份验证数据库连接,并且IIS用户具有数据库访问权限。我可以作为我用来托管Web应用程序的AppPoolUser登录并打开/修改有问题的文件,以便那些基本权限存在。 Web App在x86中编译。
工作时:
什么时候无效
我的问题
客户端和服务器的不同之处是什么?如何使其工作?我的印象是,在运行Web应用程序时,所有连接都通过AppPool用户,因此它应该在包含的任何计算机服务器上表现相同?
错误返回客户端浏览器
SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。 OLE DB记录可用。来源:" Microsoft Office Access数据库引擎" Hresult:0x80004005说明:" Microsoft Office Access数据库引擎无法打开或写入文件' \\ myserver \ My folder \ myfile.xlsx'。它已由其他用户专门打开,或者您需要获得查看和写入其数据的权限。"。 SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法调用连接管理器" MyExcelFileConnection"失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。组件" Excel来源" (1)验证失败并返回错误代码0xC020801C。一个或多个组件验证失败。任务验证期间出错。
c#运行SSIS包的代码
string pkgLocation;
Package pkg;
Application app;
DTSExecResult pkgResults;
string result = string.Empty;
string dtsErrors = string.Empty;
try
{
pkgLocation = packagePath;
app = new Application();
pkg = app.LoadPackage(pkgLocation, null);
pkgResults = pkg.Execute();
foreach (DtsError local_DtsError in pkg.Errors)
dtsErrors += " " + local_DtsError.Description;
result = pkgResults.ToString();
}
catch (Exception exception)
{
result = exception.Message;
}