我试图从另一个解决方案中调用SSIS包,但是当我试图选择外部包时,它会给我一个Invalid Class String
错误。我在使用Windows身份验证。
对这个问题有什么想法吗?
错误消息
Invalid class string
------------------------------
Program Location:
at Microsoft.SqlServer.Dts.Runtime.Application.GetPackageInfos(String strFolder, String serverName, String serverUserName, String serverPassword)
at Microsoft.SqlServer.Dts.Tasks.ExecutePackageTask.PackageBrowser.<>c__DisplayClass3_0.<EditValue>b__0(String path)
at Microsoft.SqlServer.Dts.Tasks.ExecutePackageTask.PackageBrowser.EditValue(ITypeDescriptorContext context, IServiceProvider provider, Object value)
===================================
Invalid class string
------------------------------
Program Location:
at Microsoft.SqlServer.Dts.Runtime.Wrapper.ApplicationClass.GetPackageInfos(String bstrPackageFolder, String bstrServerName, String bstrServerUserName, String bstrServerPassword)
at Microsoft.SqlServer.Dts.Runtime.Application.GetPackageInfos(String strFolder, String serverName, String serverUserName, String serverPassword)
连接属性
发布于 2021-12-06 23:24:03
按照@larnu在注释中提到的内容,可以运行当前项目中的包,或者存储在文件系统或msdb中的包。
要在SSISDB中运行一个包,我认为这会变得“有趣”。
在它的核心部分,在SSISDB中运行一个包是一些存储过程调用。
Declare @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Child1.dtsx'
, @execution_id=@execution_id OUTPUT
, @folder_name=N'TestDeply4'
, @project_name=N'Integration Services Project1'
, @use32bitruntime=False
, @reference_id=Null;
Select @execution_id
DECLARE @var0 sql_variant = N'Child1.dtsx'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=20, @parameter_name=N'Parameter1', @parameter_value=@var0
DECLARE @var1 sql_variant = N'Child2.dtsx'
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=20, @parameter_name=N'Parameter2', @parameter_value=@var1
DECLARE @var2 smallint = 1
EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id, @object_type=50, @parameter_name=N'LOGGING_LEVEL', @parameter_value=@var2
EXEC [SSISDB].[catalog].[start_execution] @execution_id
这个烂摊子会在项目'Integration Project1‘(文件夹'TestDeply4’中)中找到‘Chil1.dtsx’包,并创建一个执行上下文。它为参数1和2分配值。最后,它开始执行。
因此,要从“外部”项目在SSISDB中运行SSIS包,需要在Execute SQL Task
中复制相同的调用
什么事这么有趣
SSISDB用来执行所有魔术的存储过程都是基于CLR的,而且还有各种各样的模拟。这是请求运行包的帐户必须是一个AD支持帐户而不是只运行DB帐户的原因之一。我鼓励您一起工作POC,并将其部署到环境中,看看会发生什么。一切都会好起来的。否则,我可以看到企图双重模拟污染这整个方法。
https://stackoverflow.com/questions/70250423
复制相似问题