2014-06-11 2 views
0

Sharepoint 목록을 쿼리 할 때 흥미로운 문제가 발생합니다. 여기 Sharepoint 2010 년의 날짜 비교 CAML 쿼리

지금까지 쿼리입니다 :

camlQuery.ViewXml = new XElement("View", 
    new XElement("Query", 
     new XElement("Where", 
      new XElement("And", 
       new XElement("Geq", 
        new XElement("FieldRef", new XAttribute("Name", "Created_x0020_Date")), 
        new XElement("Value", new XAttribute("IncludeTimeValue", "TRUE"), new XAttribute("Type", "DateTime"), InStartDate.Get(context))), 
       new XElement("Leq", 
        new XElement("FieldRef", new XAttribute("Name", "Created_x0020_Date")), 
         new XElement("Value", new XAttribute("IncludeTimeValue", "TRUE"), new XAttribute("Type", "DateTime"), InEndDate.Get(context))))))).ToString(); 

Created_x0020_Date 열이 행이 생성 된 바로 그 때입니다. 흥미로운 무엇

은,와 쿼리 오류 밖으로 "는 관리자에 의해 강제 목록보기 임계 값을 초과하기 때문에 시도한 작업을 금지합니다."아무리 내가 시작 및 종료 날짜를 만드는 무엇이다 오류는 처리 할 수있는 임계 값보다 많은 행을 반환한다고 생각하는 것 같습니다. 하지만 내 종료 날짜가 시작 날짜보다 이전 인 경우에도이 오류가 발생하므로 where 절과 일치하는 날짜를 찾을 수 없습니다.

더 이상의 정보를 제공 할 수 있는지 알려주세요.

+0

SharePoint에 자동으로 채워지는 "만든"필드가있는 경우 자신의 "만든 날짜"필드를 만드는 이유는 무엇입니까? – Servy

+0

동일한 문제가 있습니다. – GGMG

+0

그게 내가 대답이 아닌 논평으로 게시 한 이유입니다. 질문에 대한 답변이 아니라 SharePoint가 이미 만들고 유지 관리하는 필드를 만들고 유지 관리하려는 노력을 절약 할 수있는 방법 일뿐입니다. – Servy

답변

1

날짜와 관련이 없으며 비교 방법도 다릅니다. 이 목록에서 수행하려고하는 모든 유형의 필터링과 관련하여이 문제가 표시됩니다.

목록보기 임계 값이 결과 집합의 크기와 관련이 없기 때문입니다.

중간 결과 집합이 임계 값보다 클 때마다 LVT가 트리거됩니다. 검색어는 검색중인 날짜보다 작거나 큰 항목을 찾으려면 [목록의 크기] 항목을 모두 검색해야합니다. 결과 집합이이 LVT보다 작다는 사실은 중요하지 않습니다. SharePoint는 오래 전에 당신을 포기합니다.

물론 "만든 날짜"필드에 색인이있는 경우 [범위의 목록] 항목을 검색하지 않아도 해당 범위 내의 모든 날짜를 파악할 수 있습니다. 색인을 사용하여 해당 항목 만 바로 얻을 수 있으므로 결과 집합이 LVT보다 작 으면 괜찮습니다.

그래서 실제 솔루션으로, 당신은 할 수 있습니다

  • 이 컬럼에 인덱스를 추가합니다. 매번 쿼리가 인덱싱 된 열을 사용하여 매번 LVT보다 적은 수의 목록을 필터링 할 수 있는지 여부에 따라 원하는대로 충분하지 않을 수도 있습니다.

  • LVT를 목록 크기보다 크게 늘리십시오.

  • 이 목록의 LVT를 비활성화하십시오.

  • 는 사용자들이 높은 LVT이 같은 관리 사용자 (확대 가능성 특권)인지 확인 (코드에서 쿼리를 수행 할 때 수행 할 수 있습니다)이 쿼리의 LVT

  • 을 무시

    .

  • 목록을 작게 만들어 LVT보다 작게 만듭니다.

    • 이 변형은 각 폴더가 LVT보다 작은 폴더에 항목을 넣는 것입니다. 그런 다음 항목 폴더가 인덱싱 된 열이기 때문에 문제없이 각 폴더에서 쿼리를 수행 할 수 있습니다.
  • 메모리 전체 목록을 LVT 미만의 페이지로 풀다가 메모리 내 개체에 대한 쿼리를 수행하십시오.

+0

LVT를 비활성화하거나 무시하고 싶지만 Sharepoint 자체에 대한 액세스 권한이 없습니다. 난 그냥 C#에서 쿼리 해요. 내가 작성한 쿼리에서이를 수행 할 수있는 방법이 있습니까? – GGMG

+0

@GGMG 함께 일해야하는 모든 옵션을 제공했습니다. 귀하의 상황에 해당되는 것이 있는지 여부는 귀하에게 달려 있습니다. 그들 중 누구도 없다면 문제를 해결할 수 없습니다. – Servy

+0

관리자 수준에서 LVT 또는 조직을 변경하는 기능이 없기 때문에이 문제를 해결할 수 없습니까? – GGMG

관련 문제