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

时间:2012-10-30 15:42:31

标签: 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

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

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

我可能错过了哪些想法?

1 个答案:

答案 0 :(得分:10)

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

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

SSIS Designer version

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

Create class library

将班级文件名更改为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.
    }
}

Add reference

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

Sign the assembly

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

Strong name key

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

Strong key created

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

中找到了gacutil

在“以管理员身份运行”模式下打开命令提示符。逐个输入以下命令,然后按enter键。

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

cd C:\Program Files\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools

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

gacutil -i C:\temp\CS40.CustomLogProvider\bin\Release\CS40.CustomLogProvider.dll

GAC register

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

DLL copied

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

SSIS project

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

Logging

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

希望有所帮助。

SSIS log provider