SSIS包尝试访问MS-Access数据库

时间:2018-05-10 18:30:56

标签: sql-server visual-studio visual-studio-2015 ssis sql-server-data-tools

我们希望将SSIS包从2008年迁移到2014年。

  1. 我们有Windows10 + Visual Studio Proff 2015 + SSDT 2015:当我们尝试从DataFlow tax访问MS-Access数据库(特别是* .accdb)文件时。只要我们将* .accdb文件添加到connectionManager并单击确定。它开始验证OLEDB连接,然后Visual Studio崩溃。
  2. Windows10 + Visual Studio 2010(shell)+带有Service Pack 4的SQL Server 2012商业智能也发生了同样的情况。
    • 此后,一旦我们再次打开项目,它就会崩溃。这是因为一旦打开项目将SSIS包打开到设计模式,连接管理器将再次尝试验证它。您可以避免设计时验证,但最终会在运行时再次崩溃。
    • ConnStr:“数据源= C:\ Users \ abc.accdb; Provider = Microsoft.ACE.OLEDB.12.0;”
  3. 当我们试图找出原因时,我们可以找到两件具体的事情。

    A)在事件日志中,我们每次VS崩溃都会看到两个一致的错误。

    i)每次都出现同样的错误:

    错误应用程序名称:devenv.exe,版本:14.0.25420.1,时间戳:0x57685d85 错误模块名称: mso40uiwin32client.dll ,版本:16.0.4666.1000,时间戳:0x5a8363ef Exception code: 0xc0000005 Fault offset: 0x0014a102 Faulting process id: 0x3730 Faulting application start time: 0x01d3e8600acedd50 Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe Faulting module path: C:\Program Files (x86)\Common Files\Microsoft Shared\Office16\mso40uiwin32client.dll Report Id: c54747c6-db07-4897-82aa-02ae596645b1 Faulting package full name: Faulting package-relative application ID:

    ii)AccessViolation异常很常见,但堆栈每次都会显示一些或其他程序集。

    应用程序:devenv.exe 框架版本:v4.0.30319 描述:由于未处理的异常,进程终止。 Exception Info: System.AccessViolationException at Microsoft.SqlServer.Dts.Pipeline.Wrapper.CManagedComponentWrapperClass.AcquireConnections(System.Object) at Microsoft.DataTransformationServices.Design.PipelineUtils.AcquireConnections(Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100, Microsoft.SqlServer.Dts.Runtime.Connections, Boolean) at Microsoft.DataTransformationServices.Design.DtsComponentDesigner+<>c__DisplayClass3.<ValidateComponentInternal>b__0() at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr, System.Object[], System.Object, System.Object[] ByRef) at System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(System.Runtime.Remoting.Messaging.IMessage, System.Runtime.Remoting.Messaging.IMessageSink) at System.Runtime.Remoting.Proxies.AgileAsyncWorkerItem.ThreadPoolCallBack(System.Object) at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

    注意: 到目前为止已经尝试过以下变通方法,但没有运气。

    • 尝试在管理员下运行SSDT。
    • 在注册表中修改'shownfirstrunoptin'属性。
    • 重新安装Visual Studio 2015。
    • 重新安装SSDT 2015
    • 使用Service Pack 4重新安装SQL Server 2012 Business Intelligence。
    • 使用“目标服务器版本”作为2012/14/16。
    • Run64BitRunTime为true / false。
    • 连接mgr:同时使用12.0和16.0 OLEDB提供程序。
    • 使用* .mdb的其他软件包正常运行。

1 个答案:

答案 0 :(得分:0)

使用(SSIS)OLEDB Source连接到MS Access 2016数据库时,我遇到了类似的问题。 SSDT Visual Studio 2017将会永久冻结。我不得不用任务管理器杀死VS。 我使用ADO NET Source(而不是OLEDB Source)和用于OleDB / Microsoft Office 16.0 Access的.Net Provider解决了这个问题。

如果使用Access数据源关闭解决方案,那么在使用Access数据源打开解决方案之前,也必须关闭Visual Studio。

对我来说,听起来很片状。再次部署后需要进行测试-尽管可信度低:(

相关问题