SSIS中没有通过HTTP下载文件的标准控制流任务。我尝试了一些解决方法(Execute Process wget,Script Task HttpClientConnection),但得出的结论是,执行此任务的最强大且可重用的方法是创建自定义组件。
我尝试按照Ray Gorski's guide执行此操作,但在我的开发环境中遇到了问题。
问题是Visual Studio 2008无法识别Microsoft.SqlServer.Dts
命名空间。它抱怨错误消息“类型或命名空间名称'Dts'在命名空间'Microsoft.SqlServer'中不存在(你是否缺少程序集引用?)”。
我在the MSDN forum上找到了建议,说你可以通过添加ManagedDTS.dll
中找到的程序集C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\
来添加引用,但我的系统上不存在此目录。我认为这是因为我使用的是SQL Server 2008而不是SQL Server 2005。
如何解决此问题?
这是我的代码,它基于Ray Gorski指南中的示例。这里没有代码可以实际完成我的任务,只是一个空存根,它不能编译。
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Runtime.Design;
namespace HTTPControlTask
{
[DtsTask(
Description = "HTTP",
DisplayName = "HTTP",
TaskContact = "Iain Elder",
TaskType = "SSIS Help Task",
RequiredProductLevel = DTSProductLevel.None)]
public class HTTPControlTask : Task, IDTSComponentPersist
{
}
}
以下是我尝试编译时看到的错误的屏幕截图:
答案 0 :(得分:7)
在64-bit
操作系统上,您可以在以下路径中找到文件Microsoft.SQLServer.ManagedDTS.dll
:
<强> C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies
强>
在32-bit
操作系统上,您可以在以下路径中找到文件Microsoft.SQLServer.ManagedDTS.dll
:
<强> C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies
强>
Microsoft SQL Server下的 90 文件夹代表SQL Server 2005
。
Microsoft SQL Server下的 100 文件夹代表SQL Server 2008
。
答案 1 :(得分:3)
对SQL2012早期答案的一个小更新
DLL文件在110。
现在,即使添加引用,如果使用.Net3.5或更早的配置文件构建项目,也会出现相同的错误。
对于SQL2012,您必须使用.Net4.0或更高版本,否则Visual Studio会向您显示相同的错误。
答案 2 :(得分:1)
安装SS2012后,脚本是在ss2008r2中开发的ssis包有描述的错误。经过几次尝试解决的尝试,我已经安装了ss2008r2 sdk,打开所有脚本并关闭,现在一切正常。
谢谢Mark