我已经制作了一个自定义的SSIS连接管理器(.NET 4.6.2):
namespace HelloWorldCm
{
using Microsoft.SqlServer.Dts.Runtime;
[DtsConnection(
ConnectionType = "HELLOWORLD",
DisplayName = "Hello World Connection Manager",
Description = "Connection manager for Hello World")]
public class HelloWorldConnectionManager : ConnectionManagerBase
{
public override DTSExecResult Validate(IDTSInfoEvents infoEvents)
{
return DTSExecResult.Success;
}
}
}
我引用的是Microsoft.SQLServer.ManagedDTS
版本14.0.0.0
,据我理解是SQL Server2017。在本地,如果我在GAC中注册并将其复制到/Connections
文件夹中,则可以使用SSIS从Visual Studio中,将连接管理器添加到我的DTSX
中。
我可以保存/构建等,并且工作正常-因此我将连接管理器和DTSX复制到运行SQL Server 2017的VM。我再次在GAC中注册并复制到/Connections
文件夹。
然后我Import Packages...
进入我的Integration Services Catalogs
,选择DTSX并按 Next 。然后这告诉我:
一个或多个选定的软件包尚未准备就绪。
当我看到为什么时:
为连接管理器“ Hello World Connection Manager”指定的连接类型“ HELLOWORLD”不能识别为有效的连接管理器类型。尝试为未知的连接类型创建连接管理器时,将返回此错误。检查连接类型名称中的拼写。
一段时间以来,我一直在努力使其能够正常工作,因此我将列出我尝试过的内容:
我敢肯定其他人。我还完成了一个自定义任务,该任务简单地在日志中打印了“ Hello World”,被编译为“ Any CPU”,以相同的方式(在相同的位置)部署,而SSIS似乎没有在找到它并接受DTSX时遇到任何问题。因此,我有足够的信心“任何CPU”都足够好。
我不确定现在要去哪里-据我所知,我已经有了正确的引用,正确的.NET版本,并且部署与该任务相同。
我将dtsx
放在下面,以防其中存在某些东西:
<?xml version="1.0"?>
<DTS:Executable xmlns:DTS="www.microsoft.com/SqlServer/Dts"
DTS:refId="Package"
DTS:CreationDate="6/11/2019 1:09:07 PM"
DTS:CreationName="Microsoft.Package"
DTS:CreatorComputerName="CHRIS"
DTS:CreatorName="CHRIS\cskar"
DTS:DTSID="{0F2D59A1-461B-46ED-8765-75484C06253C}"
DTS:ExecutableType="Microsoft.Package"
DTS:LastModifiedProductVersion="15.0.1100.123"
DTS:LocaleID="2057"
DTS:ObjectName="Package1"
DTS:PackageType="5"
DTS:VersionBuild="1"
DTS:VersionGUID="{E688A11B-234E-4F39-991E-BAA0A37642E6}">
<DTS:Property
DTS:Name="PackageFormatVersion">8</DTS:Property>
<DTS:ConnectionManagers>
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[Hello World Connection Manager]"
DTS:CreationName="HELLOWORLD"
DTS:DTSID="{9E82E067-2A0A-4C9C-931D-FD59FD159B5C}"
DTS:ObjectName="Hello World Connection Manager">
<DTS:ObjectData>
<InnerObject>
<TargetServerVersion
Type="3"
Value="150" />
</InnerObject>
</DTS:ObjectData>
</DTS:ConnectionManager>
</DTS:ConnectionManagers>
<DTS:Variables />
<DTS:Executables />
<DTS:DesignTimeProperties><![CDATA[<?xml version="1.0"?>
<Objects Version="8">
</Objects>]]></DTS:DesignTimeProperties>
</DTS:Executable>
答案 0 :(得分:4)
SSIS目录用于存储项目,而不是独立的软件包。这是2012年的一项新功能,有助于将相关软件包保持在一起。您可以参数化项目并在软件包之间共享连接管理器。如果要部署到目录中,则需要导入“ .ispac”文件,或者可以在Visual Studio中右键单击并按“ Deploy”。
在项目部署模型中时,不能将单个“ .dtsx”程序包视为独立程序包。由于上述新功能,因此仅在项目中有意义。
将独立程序包部署到MSDB是旧模型,并且得到了维护,因此我们不必立即将所有程序包都迁移到目录中。