为什么自定义SSIS日志提供程序不会显示在提供程序下拉列表中?

Rob*_*rto 3 sql-server ssis

我正在尝试为SSIS创建自定义日志记录提供程序,但在部署dll时,它不会显示在提供程序列表中.

SSIS版本是11.0.2100.60.我尝试过.NET Framework 2.0和3.5.我安装在GAC中,并且还复制到以下两个文件夹中:

C:\Program Files\Microsoft SQL Server\110\DTS\LogProviders
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\LogProviders
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我打开了Visual Studio [Shell],并创建了一个简单的SSIS包.打开SSIS\Logging...菜单时,新的自定义日志提供程序不存在.

我现在使用的代码是Microsoft提供的示例包(HTMLLogProviderCS),没有运气.

任何我可能错过的想法?

小智 10

以下是我使用Visual Studio 2010在.NET 4.0框架中创建自定义日志提供程序所执行的步骤.这些步骤还说明了提供程序在SQL Server Data Tools 2010中的显示方式.

首先,我使用的是Microsoft SQL Server集成服务设计器版本11.0.2100.60

SSIS设计器版本

创建一个类库项目.我选择了C#和.NET Framework 4,将项目命名为CS40.CustomLogProvider.

创建类库

更改类文件名称SSISCustomLogProvider.右键单击"引用"并导航C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies到添加DLL 的路径Microsoft.SQLServer.ManagedDTS.dll

将以下代码粘贴到类中:

using Microsoft.SqlServer.Dts.Runtime;

namespace CS40.CustomLogProvider
{
    [DtsLogProvider(
        DisplayName = "Custom log provider created by Siva",
        Description = "A simple log provider.",
        LogProviderType = "Custom")]
    public class SSISCustomLogProvider : LogProviderBase
    {
        // TODO: Override the base class methods.
    }
}
Run Code Online (Sandbox Code Playgroud)

添加参考

双击项目下的" 属性"节点.单击属性页面上的" 签名"选项卡,使用强密钥对程序集进行签名.选中签署组件并选择选择强名称密钥文件.

签署程序集

输入密钥文件名,例如SampleKey.如果您愿意,可以输入密码.

强名称密钥

将创建强名称密钥并将其添加到项目中.

创造了强大的钥匙

建立项目.我在发布模式下构建了项目.DLL将可用于C:\temp\CS40.CustomLogProvider\bin\Release.现在,是时候将DLL注册到GAC了.我发现了路径中的gacutilC:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

在"以管理员模式运行"中打开命令提示符.逐个输入以下命令,然后按Enter键.

将命令提示符路径更改为可以找到gacutil的位置.

cd C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools
Run Code Online (Sandbox Code Playgroud)

输入以下命令以将DLL添加到GAC.

gacutil -i C:\temp\CS40.CustomLogProvider\bin\Release\CS40.CustomLogProvider.dll
Run Code Online (Sandbox Code Playgroud)

GAC注册

复制DLL CS40.CustomLogProvider.dll中的位置C:\temp\CS40.CustomLogProvider\bin\Release,并将其粘贴C:\Program Files\Microsoft SQL Server\110\DTS\LogProviders.110路径中的值是指SQL Server 2012.

DLL已复制

使用SQL Server数据工具创建新的SSIS包.

SSIS项目

在新创建的SSIS包上,单击SSIS --> Logging...以访问日志记录选项

记录

您会注意到新创建的SSIS日志提供程序.您可以看到它显示DisplayName属性上使用的值.

希望有所帮助.

SSIS日志提供程序