【问题标题】:SSDT BI Custom connection manager AccessViolationExceptionSSDT BI 自定义连接管理器 AccessViolationException
【发布时间】:2015-02-26 20:08:57
【问题描述】:

我为 SSDT BI (SSIS) 创建了一个自定义连接管理器,它将使用 Oracle 的托管数据访问库 (Oracle.ManagedDataAccess.dll) 连接到 Oracle 数据库。

在我的开发机器上,这个连接管理器以及与之配套的自定义“数据源”管道组件可以正常工作。当我将包部署到服务器并尝试运行它时,包总是会失败并出现“AccessViolationException”。

服务器正在运行 Windows Server 2012R2 和 Sql Server 2014

到目前为止,调试并没有给我太多信息。当我逐步执行我的代码时,我的空的默认构造函数被调用,但没有别的。一旦它退出构造函数,我就会得到异常。我的自定义类中没有其他方法被调用过。

这是转储到 Windows 事件日志的信息。

应用程序:ISServerExec.exe 框架版本:v4.0.30319 说明:进程因未处理的异常而终止。 异常信息:System.AccessViolationException 堆: 在 Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackagePersist100.LoadPackageFromXML(System.Object,布尔值,Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSEvents100) 在 Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackagePersist100.LoadPackageFromXML(System.Object,布尔值,Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSEvents100) 在 Microsoft.SqlServer.Dts.Runtime.Package.LoadFromXML(System.String,Microsoft.SqlServer.Dts.Runtime.IDTSEvents) 在 Microsoft.SqlServer.Dts.Runtime.Project.LoadPackage(Microsoft.SqlServer.Dts.Runtime.IProjectStorage、Microsoft.SqlServer.Dts.Runtime.Package、System.String、Microsoft.SqlServer.Dts.Runtime.IDTSEvents) 在 Microsoft.SqlServer.Dts.Runtime.PackageItem.Load(Microsoft.SqlServer.Dts.Runtime.IDTSEvents) 在 Microsoft.SqlServer.Dts.Runtime.PackageItem.LoadPackage(Microsoft.SqlServer.Dts.Runtime.IDTSEvents) 在 Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ISServerExecutionEvents.LoadPackage(Microsoft.SqlServer.Dts.Runtime.PackageItem) 在 Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.StartPackage() 在 Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.PerformOperation() 在 Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ExecuteMain.Main(System.String[])

【问题讨论】:

    标签: c# ssis sql-server-2014 ssdt-bi


    【解决方案1】:

    我之前遇到过类似的问题。解决方法是 sql server 代理没有正确的权限来使用 dll 文件。

    可能的修复:

    • 检查 dll 在服务器上的位置。
    • 确认使用 dll 的权限。

    抱歉,我无法提供更精确的修复,我站点的 DBA 最终为我修复了它,这是他们之后给我的总结。

    【讨论】:

    • 我提供了服务帐户,用于运行所有 .dtsx 包,对服务器具有完全的管理员访问权限,但仍然存在同样的问题。您是否有机会确切了解更改的内容?
    • 我询问了我的 DBA,他回答说:“DLL 没有在宿主 SQL Server 中注册。必须为 C# 代码正在访问的源系统执行本机安装。”
    • 对不起。并不真地。我配置了帐户,测试包以对服务器的完全管理员访问权限运行,但我仍然遇到同样的问题。我认为这将解决任何权限问题。
    【解决方案2】:

    你能帮我画出 SSIS 包的轮廓吗?

    我有预感,在 SSIS 2008 中嵌套序列容器对象时会出现此问题。当您使用 SQL Business Intelligence Development Studio 2008 创建包并嵌套序列容器,然后将包升级到 SSIS 2012 或更高版本时,然后在 SQL Server Data Tools 2012 或更高版本中打开包,包的显示方式将与 2008 年不同。外部序列容器不会附加到任何东西。

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多