0

我已经在 Windows 2012 上安装了 Windows Search Service 功能。现在我正在测试应该将查询从 Windows 2008 发送到 Windows 2012 目录的表单。Windows 2008 也安装了 Windows Search 服务来安装/注册 db 驱动程序。

该表单只能在 Windows 2012 本地正常工作,但不能从 Windows 2008 到 Windows 2012(远程访问目录),Wireshark 不显示传出查询。

查询本地目录(成功):

("SELECT System.FileName,System.ItemPathDisplay,System.DateCreated FROM SystemIndex WHERE SCOPE='file:C:/test'", SearchConnect);

查询远程目录 Windows 2008 > Windows 2012(不成功)

("SELECT System.FileName,System.ItemPathDisplay,System.DateCreated FROM MyServer.SystemIndex WHERE SCOPE='file:C:/test'", SearchConnect);
("SELECT System.FileName,System.ItemPathDisplay,System.DateCreated FROM SystemIndex WHERE SCOPE='file://MyServer/C:/test'", SearchConnect);

部分代码 - 测试期间仅修改 select

 {
    string connectionString = "Provider=Search.CollatorDSO.1;Extended Properties='Application=Windows'";
    OleDbConnection SearchConnect = new OleDbConnection();
    SearchConnect.ConnectionString = connectionString;
    OleDbDataAdapter SearchAdpt = new OleDbDataAdapter("SELECT System.FileName,System.ItemPathDisplay,System.DateCreated FROM SystemIndex WHERE SCOPE='file:C:/test'", SearchConnect);

    SearchAdpt.Fill(searchResults);
  }

参考

MSDN - 范围和目录谓词

4

1 回答 1

0

您要求本地服务器在本地系统上开始搜索,由另一台服务器完成...

使用您的声明

SELECT * FROM OPENQUERY(externalServer,'script') T

在您的情况下翻译为:

"SELECT * FROM OPENQUERY(MyServer, ' SELECT System.FileName, System.ItemPathDisplay, System.DateCreated FROM SystemIndex WHERE SCOPE=''file:C:/test'' ') T"
于 2015-07-06T14:39:52.950 回答