首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SSIS外部包-无效的类字符串错误

SSIS外部包-无效的类字符串错误
EN

Stack Overflow用户
提问于 2021-12-06 18:50:33
回答 1查看 537关注 0票数 0

我试图从另一个解决方案中调用SSIS包,但是当我试图选择外部包时,它会给我一个Invalid Class String错误。我在使用Windows身份验证。

对这个问题有什么想法吗?

错误消息

代码语言:javascript
运行
复制
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)

连接属性

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-06 23:24:03

按照@larnu在注释中提到的内容,可以运行当前项目中的包,或者存储在文件系统或msdb中的包。

要在SSISDB中运行一个包,我认为这会变得“有趣”。

在它的核心部分,在SSISDB中运行一个包是一些存储过程调用

代码语言:javascript
运行
复制
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,并将其部署到环境中,看看会发生什么。一切都会好起来的。否则,我可以看到企图双重模拟污染这整个方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70250423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档