注意: SQL Server3.5应用程序调用远程服务器上的C# Server2005DB。
我正在开发一个两步流程。
1)我在Windows索引服务中搜索包含给定单词的文件列表,例如"Bob“。
2)然后,我需要通过从索引服务传入文件名列表,从SQL DB的文档表中检索行的列表。
此时,我从索引服务中检索一个列表,并从文档表中检索所有行,然后在代码中对它们进行过滤。这是不实际的,因为有10,000+文档,并且数据库是通过防火墙的。
我考虑创建一个查询,例如:
从DocName所在的文档中选择列表({来自索引服务的文件列表})
...but给出的文件列表可能有数千个,它不会工作。
那么,我能做的最好的事情是什么?我不想查询数据库中所有的10,000+行,然后将它们传递回防火墙(需要10分钟)。不知何故,我需要传入从索引服务检索到的文件名列表。
linq在这种情况下是如何工作的?
任何建议都非常感谢。
发布于 2011-11-08 16:27:14
如果您有SQL Server2008,您可以使用Table Valued Parameters,但是对于2005,没有什么比这更优雅的了。
我能想到的最简单的解决方案是:
这不是一个很好的解决方案,但我不知道有没有一个很好的解决方案--这就是TVP被创建的原因。
发布于 2011-11-08 18:16:06
你可以为这种“大规模”操作评估不同的解决方案,可能不需要使用linq。例如,尝试在SQL Server上实现一个存储过程,它在输入中接收文件名列表并返回文档列表。
发布于 2011-11-10 12:07:16
我选择了一个类似于Bazzz提到的解决方案。
我设置了一个夜间操作,从数据库中复制所需的字段,并在文档文件(PDF)上设置meta标记。然后可以在索引服务中使用元数据;o)
事实证明,对于这种情况,这是一个很好的解决方案,但在Sql Server2005上,Hallainzil所说的将是最佳选择,尽管令人痛苦。
https://stackoverflow.com/questions/8047380
复制相似问题