使用SSIS连接到SharePoint时,远程服务器返回意外响应417

时间:2015-05-21 17:34:37

标签: sql-server sharepoint ssis sharepoint-2010

我正在尝试使用SSIS 2012连接到SharePoint列表(SP 2010,内部部署)。我下载了适用于SQL Server 2012的SharePoint适配器,并且正在关注"提取和加载SharePoint数据的MSDN教程SQL Server Integration Services"。

对于我的生活,我似乎无法建立连接。我已经使用Connection Manager添加了一个SP连接,以及类型为" SharePoint List Source"的相应数据流任务。当我测试我的连接时,我收到417错误消息(下面)。我花了一整天的时间在网上寻找解决方案 - 各种错误的开始,但仍然没有运气。

其他人建议我通过将expect100continue= true属性设置为false来抑制Error at Data Flow Task [SharePoint List Source [2]]: System.ServiceModel.ProtocolException: The remote server returned an unexpected response: (417) Expectation Failed. ---> System.Net.WebException: The remote server returned an error: (417) Expectation Failed. at System.Net.HttpWebRequest.GetResponse() at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) 属性,但由于我使用的是SSIS,因此我不确定在何处更改此配置 - 请帮忙!

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory`1 factory, WebException responseException, ChannelBinding channelBinding)
   at System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

---内部异常堆栈跟踪结束---

   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Microsoft.Samples.SqlServer.SSIS.SharePointUtility.ListsService.ListsSoap.GetListAndView(GetListAndViewRequest request)
   at Microsoft.Samples.SqlServer.SSIS.SharePointUtility.ListsService.ListsSoapClient.ListsService_ListsSoap_GetListAndView(GetListAndViewRequest request)
   at Microsoft.Samples.SqlServer.SSIS.SharePointUtility.ListsService.ListsSoapClient.GetListAndView(String listName, String viewName)
   at Microsoft.Samples.SqlServer.SSIS.SharePointUtility.Adapter.ListsAdapter.GetSharePointFields(String listName, String viewId)
   at Microsoft.Samples.SqlServer.SSIS.SharePointUtility.ListServiceUtility.GetFields(Uri sharepointUri, NetworkCredential credentials, String listName, String viewName)
   at Microsoft.Samples.SqlServer.SSIS.SharePointListAdapters.SharePointListSource.GetAccessibleSharePointColumns(String sharepointUrl, String listName, String viewName)
   at Microsoft.Samples.SqlServer.SSIS.SharePointListAdapters.SharePointListSource.ValidateSharePointColumns()
   at Microsoft.Samples.SqlServer.SSIS.SharePointListAdapters.SharePointListSource.Validate()
   at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostValidate(IDTSManagedComponentWrapper100 wrapper)

在[0]处重新抛出异常:

Width="Auto"

1 个答案:

答案 0 :(得分:0)

我在SQL Server 2008R2环境下使用了SSIS中CodePlex的SharePoint适配器。设置起来很棘手,也许我可以提供一些帮助,即使我没有使用2012版本。我记得有一些问题可能有关,可以提供帮助。

  • 由于SharePoint服务器在与SQL数据库不同的服务器上运行,因此我必须应用内置的SharePoint Web服务才能访问XML格式的信息。我正在提取文档名称,更新,上次更新等信息并将其导入数据库。
  • 确保您在SSIS中的SharePoint数据源中提供了正确的信息。在“组件属性”下,必须填充三个必填字段才能建立连接:站点URL,站点列表名称和视图。我记得因为SharePoint的设置方式而难以确定要输入的正确站点列表名称。这是非常个性化的。以下SharePoint链接中定义的步骤将有助于验证您是否应用了正确的站点列表名称(站点ID)。

    http://sharepointknowledgebase.blogspot.com/2011/11/how-to-find-out-site-id.html#.VV4qZunbKUk

  • 连接后要注意的另一件事是修改SharePoint适配器中的映射。默认情况下,它将映射XML中可用的所有SharePoint字段。这可能会导致内存问题,几年前我向CodePlex报告过。如果尚未解决,只需删除未应用的映射链接。以下链接将有助于设置。

    http://blogs.msmvps.com/ivansanders/2011/07/24/ssis-sharepoint-list-adapters/

希望这有帮助。