以编程方式和从命令行(DTEXEC)运行SSIS包时出现问题
本文关键字:运行 SSIS 包时出 问题 DTEXEC 方式 编程 命令行 | 更新日期: 2023-09-27 18:22:50
我正试图使用C#以编程方式执行SSIS包。
Application app = new Application();
Package package = app.LoadPackage(pkgFullPath, null);
package.Execute();
我得到一个错误说:
Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Conditional Split of Integration Services or higher.
Error in Microsoft.SqlServer.Dts.Runtime.TaskHost/SSIS.Pipeline : To run a SSIS package outside of SQL Server Data Tools you must install Lookup of Integration Services or higher.
我在Visual Studio 2010中使用SSIS,但在VS 2012(运行.Net 4.0)中执行nunit测试中的C#代码
如果我通过调试(按F5)启动该包,则该包在VS 2010中的SSIS项目中运行良好,但如果我尝试从命令行使用dtexec运行该包,它将失败,并出现相同的错误(32位和64位版本的dtexec都出现相同的失败)。如果我使用ctrl+F5(未调试)从Visual Studio内部启动它,它也会失败,并出现相同的错误
我在网上发现了一些文章,认为这与64位对32位的问题有关,但在运行两个版本的dtexec时,我看到了相同的错误。我使用的是11.0.2100.60版本的dtexec,它与VS 2010中SQL Server Integration Services Designer的版本相匹配。
如果我运行一个没有条件拆分和查找的简单包,我不会得到错误。我是否必须安装一些额外的东西才能在Visual Studio之外运行此程序?
有什么想法吗?
继续我上面的评论,如果服务安装正确,那么可能是执行包的帐户的权限问题(我看到您使用的是SQL 2012)。
请参阅http://technet.microsoft.com/en-us/library/hh213130.aspx
希望能有所帮助。
这是VB代码,但可以很容易地转换为C#。请尝试运行执行SSIS包的SQL命令。
类似于:
Try
'Job implementation goes here
Dim jobConnection As System.Data.SqlClient.SqlConnection
Dim jobCommand As SqlCommand
Dim jobParameter As SqlParameter
Dim jobReturnValue As SqlParameter
Dim jobResult As Integer
jobConnection = New System.Data.SqlClient.SqlConnection(SSISConnectionString)
jobCommand = New SqlCommand("msdb.dbo.sp_start_job", jobConnection)
jobCommand.CommandType = CommandType.StoredProcedure
jobReturnValue = New SqlParameter("@RETURN_VALUE", SqlDbType.Int)
jobReturnValue.Direction = ParameterDirection.ReturnValue
jobCommand.Parameters.Add(jobReturnValue)
jobParameter = New SqlParameter("@job_name", SqlDbType.VarChar)
jobParameter.Direction = ParameterDirection.Input
jobCommand.Parameters.Add(jobParameter)
jobParameter.Value = packageName
jobConnection.Open()
jobCommand.ExecuteNonQuery()
jobResult = DirectCast(jobCommand.Parameters("@RETURN_VALUE").Value, Integer)
jobConnection.Close()
Select Case jobResult
Case 0
'Successful run
Case Else
Throw New Exception("SQLAgent Job failed to start!")
End Select
Catch ex As Exception
Return ex
End Try
根据微软安装集成服务网页:
"您可以在安装向导的"功能选择"页上选择要安装的某些SQL Server组件安装Integration Services组件的部分子集。这些组件对特定任务很有用,但Integration Services的功能将受到限制。例如,"数据库引擎服务"选项安装S所需的Integration Services组件SQL Server导入和导出向导。"SQL Server数据工具"选项安装了设计包所需的Integration Services组件,但没有安装Integration Services服务,并且您不能在SQL Server Data Tools之外运行包。若要确保Integration Services的完整安装,必须在"功能选择"页面上选择"Integration Services"。"
这就是为什么您可以从Microsoft工具内部运行SSIS包,但不能从这些工具外部运行。奇怪的是,它只落在某些类型的组件上。
如果您按照他们在该页面上的建议完整安装集成服务组件,这应该可以解决问题。
"要完整安装Integration Services,以及开发和管理包的工具和文档,请选择Integration Services和以下共享功能:
- SQL Server数据工具,用于安装用于设计包的工具
- 管理工具-完成以安装SQL Server Management Studio用于管理包。
- 用于安装托管程序集的客户端工具SDK用于Integration Services编程
"