部署自定义 SSIS 连接管理器失败并显示“...未被识别为有效的连接管理器类型”
Deploying custom SSIS connection manager failing with '...is not recognized as a valid connection manager type'
我制作了自定义 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 Server 2017。在本地,如果我在 GAC 中注册它并复制到我的 /Connections
文件夹,我可以在 Visual Studio 中使用 SSIS,并将连接管理器添加到我的 DTSX
中。
我可以保存/构建等,它工作正常 - 所以我将连接管理器和 DTSX 复制到我的 VM 运行 SQL Server 2017。我再次在 GAC 中注册并复制到 /Connections
文件夹。
然后我 Import Packages...
进入我的 Integration Services Catalogs
、select DTSX 并按 下一步。这然后告诉我:
One or more selected packages are not ready.
当我看到原因时:
The connection type "HELLOWORLD" specified for connection manager "Hello World Connection Manager" is not recognized as a valid connection manager type. This error is returned when an attempt is made to create a connection manager for an unknown connection type. Check the spelling in the connection type name.
我已经尝试让它工作很长一段时间了,所以我将列出我尝试过的内容:
- 已尝试 'Any CPU' 版本
- 已尝试 'x86' 版本
- 已尝试 'x64' 版本
- 也用虚拟任务尝试了 DTSX
- 重新启动服务器(任何部署后)
我确定其他人。我还做的是创建一个自定义任务,它只是将 'Hello World' 打印到日志中,它被编译为 'Any CPU',以相同的方式部署(到相同的位置)而 SSIS 没有似乎在找到它和接受 DTSX 时遇到任何问题。所以我有理由相信 'Any 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>
SSIS 目录用于存储项目,而不是独立包。这是 2012 年的一项新功能,有助于将相关包放在一起。您可以参数化项目并在包之间共享连接管理器。如果您要部署到目录,则需要导入一个“.ispac”文件,或者您可以在 Visual Studio 中 right-click 然后按 "Deploy"。
在项目部署模型中,单个“.dtsx”包不能被视为stand-alone。由于上述新功能,它仅作为项目的一部分才有意义。
将 stand-along 包部署到 MSDB 是旧模型并得到维护,因此我们不必立即将所有包迁移到目录。
我制作了自定义 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 Server 2017。在本地,如果我在 GAC 中注册它并复制到我的 /Connections
文件夹,我可以在 Visual Studio 中使用 SSIS,并将连接管理器添加到我的 DTSX
中。
我可以保存/构建等,它工作正常 - 所以我将连接管理器和 DTSX 复制到我的 VM 运行 SQL Server 2017。我再次在 GAC 中注册并复制到 /Connections
文件夹。
然后我 Import Packages...
进入我的 Integration Services Catalogs
、select DTSX 并按 下一步。这然后告诉我:
One or more selected packages are not ready.
当我看到原因时:
The connection type "HELLOWORLD" specified for connection manager "Hello World Connection Manager" is not recognized as a valid connection manager type. This error is returned when an attempt is made to create a connection manager for an unknown connection type. Check the spelling in the connection type name.
我已经尝试让它工作很长一段时间了,所以我将列出我尝试过的内容:
- 已尝试 'Any CPU' 版本
- 已尝试 'x86' 版本
- 已尝试 'x64' 版本
- 也用虚拟任务尝试了 DTSX
- 重新启动服务器(任何部署后)
我确定其他人。我还做的是创建一个自定义任务,它只是将 'Hello World' 打印到日志中,它被编译为 'Any CPU',以相同的方式部署(到相同的位置)而 SSIS 没有似乎在找到它和接受 DTSX 时遇到任何问题。所以我有理由相信 'Any 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>
SSIS 目录用于存储项目,而不是独立包。这是 2012 年的一项新功能,有助于将相关包放在一起。您可以参数化项目并在包之间共享连接管理器。如果您要部署到目录,则需要导入一个“.ispac”文件,或者您可以在 Visual Studio 中 right-click 然后按 "Deploy"。
在项目部署模型中,单个“.dtsx”包不能被视为stand-alone。由于上述新功能,它仅作为项目的一部分才有意义。
将 stand-along 包部署到 MSDB 是旧模型并得到维护,因此我们不必立即将所有包迁移到目录。