我有一个vb应用程序,它使用click事件来设置位于sql 2008r2 x86服务器上的SSIS包。 sql server和集成服务都是32位。 vb应用程序是32位但我仍然收到以下错误消息:
应用程序中发生未处理的异常... Microsoft.SQLServer.DTS.Runtime.DtsComException:找不到Integration Services类。确保在运行该应用程序的计算机上正确安装了Integration Services。此外,如果您运行的是64位应用程序,请确保已安装64位版本的Integration Services。
客户端计算机究竟在寻找什么?我需要单独安装或作为部署包的一部分进行安装才能使其正常工作?
应用程序在dev框中运行时没有错误,其中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引用设置为复制本地,因此它位于用户计算机上但我仍然收到错误。 非常感谢任何帮助。我已经苦苦挣扎了一个多星期,仍然没有驯服它。
答案 0 :(得分:0)
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存储过程。
再次感谢Tab