Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web服务、Windows服务或SQL CLR集成?_Sql_Sql Server_Clr_Service_Integration - Fatal编程技术网

Web服务、Windows服务或SQL CLR集成?

Web服务、Windows服务或SQL CLR集成?,sql,sql-server,clr,service,integration,Sql,Sql Server,Clr,Service,Integration,各位下午好, 我有点不知所措,面临着一些紧迫的最后期限,所以希望有人能提供一些建议 我的起点是SQL Server数据库中的一个表,其中两个字段是从gps单元获得的x、y坐标。我将负责对这些位置进行地理编码(获取物理街道地址),并将结果写入成功表或错误表。我正在结束类库(C#),它实际上完成了地理编码过程,但对于将所有内容联系在一起的最佳方式感到非常困惑 理想情况下,我希望将一个dataset/datatable从SQL Server发送到某种类型的服务,其中所有记录都将进行地理编码,每个记录的

各位下午好,

我有点不知所措,面临着一些紧迫的最后期限,所以希望有人能提供一些建议

我的起点是SQL Server数据库中的一个表,其中两个字段是从gps单元获得的x、y坐标。我将负责对这些位置进行地理编码(获取物理街道地址),并将结果写入成功表或错误表。我正在结束类库(C#),它实际上完成了地理编码过程,但对于将所有内容联系在一起的最佳方式感到非常困惑

理想情况下,我希望将一个dataset/datatable从SQL Server发送到某种类型的服务,其中所有记录都将进行地理编码,每个记录的结果/失败都将写回相应的表中。由于数据库和dll将驻留在同一台服务器上,我不明白为什么要使用web服务。因此,我接下来的调查指向windows服务或SQL CLR集成。我的主要问题是:

  • 其中一种方法比其他方法更合适吗
  • 这种方法(就最佳实践而言)可以接受吗
  • 如有任何提示、意见和建议,将不胜感激


    另一方面,如果还不明显的话,我是一个比较新手的程序员。作为一名程序员,这个网站是我成长过程中一个非常宝贵的工具,我非常感谢那些花时间阅读帖子并提供专家建议的人。

    您的地理编码代码可能会连接到地理编码服务,这排除了SQL CLR集成的可能性。从技术上讲,从SQLCLR内部获取外部资源,特别是web服务,是您可能犯的最大错误。经过几天的时间,您的服务器将被冻结在工人饥饿,因为CLR线程劫持,保证

    最好的方法是使用ETL策略。坐标被转储到暂存表中,您启动ETL过程并将所有坐标转换为地理代码,然后将结果写入成功和错误表。ETL方法通常考虑批处理、中断和恢复等。ETL可以是一个启动应用程序的SQL作业,一个SSIS包,有很多方法可以做到这一点,重要的一点是将工作分离到暂存表中,并提供挂起/恢复语义。您现在拥有的dll代码(我假设是地理编码web服务客户端代理代码)可能占项目的0.001%


    该流程是否需要作为web服务公开,与ETL流程完全正交,应该由客户机连接需求和技术来驱动。换句话说,如果客户机代码使用WS预上传坐标,那么就这样做,只要您考虑大型数据集,并且为结果提供解耦、异步和排队的语义

    这是我刚刚遇到的一个非常古老的问题。作为将来的参考,ONS提供了一个下载,您可以将邮政编码映射到邮政编码的lat/long(平均中心点),并且是免费的。还有相当数量的其他下载。如果您感兴趣,可以在这里找到:

    为什么使用SQL Server CLR会导致线程不足?如果服务是单例的,并且在完成时正确地处理了它的资源,那么它仍然被认为是一个坏主意吗?很好!你能不能也为这里遇到的所有其他人添加一个下载链接。我有点懒。编辑原始答案以包含链接。