【问题标题】:Unhandled exception in vb app using dts runtime使用 dts 运行时的 vb 应用程序中未处理的异常
【发布时间】:2014-08-21 14:14:16
【问题描述】:

我有一个 vb 应用程序,它使用单击事件来触发位于 sql 2008r2 x86 服务器上的 SSIS 包。 sql server 和集成服务都是 32 位的。 vb 应用程序是 32 位的,但我仍然收到以下错误消息:

您的应用程序中出现未处理的异常... Microsoft.SQLServer.DTS.Runtime.DtsComException:找不到集成服务类。确保在运行应用程序的计算机上正确安装了集成服务。此外,如果您正在运行 64 位应用程序,请确保安装了 64 位版本的集成服务。

客户端计算机到底在寻找什么?我需要单独安装什么或作为部署包的一部分安装才能使这项工作正常运行?

应用程序在安装了 sql 一切以及所有 Visual Studio 工具的开发盒上运行时没有错误。但是,当我将它部署到最终用户时,我会收到上述消息。我是否理解上述消息说我必须在客户端计算机上安装集成服务才能在我的应用程序中使用 Microsoft.SQLServer.DTSRuntime?如果是这样,那似乎很笨拙。更不用说在数百个桌面上安装它是不可行的。

应用程序中的代码很简单,我认为这不是问题,但我会将其粘贴在这里以防万一。

Private Sub btnISupplierImport_Click(sender As Object, e As EventArgs) Handles btnISupplierImport.Click


    'Executes SSIS job to import customer requirements.
    Dim appReader As New System.Configuration.AppSettingsReader
    Dim app As New Microsoft.SqlServer.Dts.Runtime.Application()
    Dim package As New Microsoft.SqlServer.Dts.Runtime.Package()
    Dim jobName As String
    Dim ssisServerName As String
    Dim msg As String = "Importing requirements"
    Dim title As String = "Import"
    Dim style As MsgBoxStyle = MsgBoxStyle.OkCancel
    Dim response = MsgBox(msg, style, title)
    If response = MsgBoxResult.Ok Then
        Try
            jobName = appReader.GetValue("CustomerRequirementsImportJobName", GetType(System.String))
            ssisServerName = appReader.GetValue("CustomerRequirementImportServerName", GetType(System.String))
            package = app.LoadFromSqlServer(jobName, ssisServerName, "Bob", "Password", Nothing)
            package.Execute()
            MessageBox.Show("Finished Importing")
        Catch ex As DtsException
            'MessageBox.Show(ex)
        End Try
    End If


End Sub

最后,Microsoft.SQLServer.ManagedDTS 和 Microsoft.SQLServer.DTSRuntimeWrap 引用设置为复制本地,因此它在用户计算机上,但我仍然收到错误。 非常感谢您对此的任何帮助。我已经为此苦苦挣扎了一个多星期,仍然没有驯服它。

【问题讨论】:

  • 我无法从 .net 应用程序启动 SSIS 包。有效的是创建一个启动 SSIS 包的作业,并使用 SQL 命令从 .net 应用程序启动该作业。
  • 感谢标签!用少了几行代码就可以解决问题。

标签: sql sql-server vb.net ssis


【解决方案1】:

Tab 的回复快速解决了我的问题。虽然我仍然想知道如何解决原始问题,但他的解决方案对我有用。这是让我重新开始的代码更改。

Private Sub btnISupplierImport_Click(sender As Object, e As EventArgs) Handles btnISupplierImport.Click

    Dim appReader As New System.Configuration.AppSettingsReader
    Dim connectionString As String = CStr(appReader.GetValue("SqlConnection.ConnectionString", GetType(System.String)))
    Dim connection As SqlConnection = New SqlConnection(connectionString)
    connection.Open()

    Dim command As SqlCommand = New SqlCommand()
    command.CommandText = "sp_start_job"
    command.CommandType = CommandType.StoredProcedure
    command.Parameters.AddWithValue("@job_name", "Customer Requirements")
    command.Connection = connection
    command.ExecuteNonQuery()
    connection.Close()
End Sub

最后一点 - 连接字符串必须引用系统 msdb 数据库才能触发 sp_start_job 存储过程。

再次感谢标签

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多