我正在尝试为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 )提供的示例包,但没有运气。
我可能错过了哪些想法?
答案 0 :(得分:10)
以下是使用Visual Studio 2010在.NET 4.0框架中创建自定义日志提供程序时执行的步骤。这些步骤还说明了提供程序在SQL Server Data Tools 2010中的显示方式。
首先,我使用的是Microsoft SQL Server集成服务设计器版本11.0.2100.60
创建一个类库项目。我选择了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.
}
}
双击项目下的属性节点。单击属性页面上的签名选项卡,使用强密钥对程序集进行签名。选中签署程序集并从中选择 选择强名称密钥文件。
输入密钥文件名,例如SampleKey。如果您愿意,可以输入密码。
将创建强名称密钥并将其添加到项目中。
构建项目。我在发布模式下构建了项目。该DLL将在C:\temp\CS40.CustomLogProvider\bin\Release
中提供。现在,是时候将DLL注册到GAC了。我在路径C:\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
输入以下命令将DLL添加到GAC。
gacutil -i C:\temp\CS40.CustomLogProvider\bin\Release\CS40.CustomLogProvider.dll
将DLL CS40.CustomLogProvider.dll
复制到位置C:\temp\CS40.CustomLogProvider\bin\Release
并将其粘贴到C:\Program Files\Microsoft SQL Server\110\DTS\LogProviders
。路径中的值110
是指SQL Server 2012。
使用SQL Server数据工具创建新的SSIS包。
在新创建的SSIS包上,单击SSIS --> Logging...
以访问日志记录选项
您会注意到新创建的SSIS日志提供程序。您可以看到它显示了DisplayName属性上使用的值。
希望有所帮助。