Cum să interoghezi datele din lista Sharepoint? (Programare, Sql, Server Sql, Sharepoint, Sharepoint 2010)

Santhosh a intrebat.

Știe cineva cum să obțină datele din lista Sharepoint folosind interogarea sql bazată pe un anumit utilizator Sharepoint.

Comentarii

  • În ce limbaj? Vă referiți la o interogare SQL către SQL Server direct????? Sau vă referiți la interogarea unei liste Sharepoint cu o sintaxă SQL din JavaScript? Pentru această ultimă opțiune (sintaxa SQL cu JavaScript), uitați-vă la aymkdn.github.io/SharepointPlus/symbols/… –  > Por AymKdn.
4 răspunsuri
Velin Georgiev

Tu nu puteți folosi nu ar trebui să folosiți cu adevărat SQL pentru a obține date din lista SharePoint. Cea mai comună modalitate de a face acest lucru este soluția personalizată în care puteți utiliza CAML (SPQuery) pentru a prelua date pentru elementele din listă (create de utilizator, de exemplu) http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.aspx sau puteți expune serviciile SharePoint pentru a obține aceleași rezultate http://msdn.microsoft.com/en-us/library/sharepoint/jj164060.aspx.

Comentarii

  • Pentru a extinde răspunsul lui Velin, trebuie să considerați SharePoint ca fiind cutii negre. Nu numai că schema este foarte ciudată (încadrarea unei baze de date de documente într-o bază de date relațională nu este foarte naturală și nici foarte simplă), dar Microsoft spune că schema nu este fixă și că se poate schimba în cele din urmă cu noile versiuni. –  > Por Steve B.
  • Este grozav, cu excepția faptului că CAML (SPQuery) este o scuză destul de jalnică pentru un limbaj de interogare, cu excepția cazului în care doriți o simplă instrucțiune de selectare fără caracteristici de agregare, distincte sau TOP. –  > Por JohnFx.
  • Există multe scenarii în care este posibil să trebuiască să faceți acest lucru sau este necesar pentru orice motiv, nu ați răspuns la întrebare, care a fost cum să o faceți în SQL Server folosind declarații SQL Aș vota să vă votez în jos, dar nu am suficiente puncte. –  > Por Jason Robertson.
  • Access o face cu ‘add external data -> online services -> sharepoint’ și face un ‘table’. Oricum, care ar fi o alternativă pentru a exporta din lista sharepoint într-un tabel sql? –  > Por JDPeckham.
Adrian Sullivan

Atâta timp cât este vorba de SharePoint 2010, este încă relativ ușor de extras din SQL, atâta timp cât aveți GUID-ul id-ului listei

A se vedea aici

    SELECT
    ud.tp_ID
    , ud.tp_ListId
    , ud.tp_Author
    , ud.nvarchar1
    , ud.nvarchar2
    , ud.nvarchar3
    , ud.nvarchar4
    , ud.nvarchar5
    , ud.nvarchar6
    , ud.nvarchar7
    , ud.nvarchar8
    , ud.nvarchar9
    , ud.nvarchar10
    , ud.nvarchar11
    , ud.nvarchar12
    , ud.*
    FROM dbo.UserData ud
    WHERE (ud.tp_ListId =  '[{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}')

Comentarii

  • Rețineți că nu aveți nevoie de join-ul dbo.Lists aici (sau altfel doriți să faceți l.* la final?) –  > Por Daniel.
  • Corect, nu aveți nevoie de tabela Lists în această interogare, am făcut modificările –  > Por Adrian Sullivan.
  • Ce se întâmplă când datele sunt depășite și există rânduri înfășurate? –  > Por scuba88.
Andrey Morozov

Soluția pentru cazul meu – afișarea listei SP

select l.tp_title
, n1.title.value('(text())[1]', 'nvarchar(32)') as Title
, n2.[status].value('(text())[1]', 'nvarchar(32)') as [Status]
, n3.[priority].value('(text())[1]', 'nvarchar(32)') as [Priority]
from Lists l
join UserData u on u.tp_ListId = l.tp_ID
cross apply tp_ColumnSet.nodes('/nvarchar1') AS n1(title)
cross apply tp_ColumnSet.nodes('/nvarchar3') AS n2([status])
cross apply tp_ColumnSet.nodes('/nvarchar4') AS n3([priority])
where l.tp_title = 'LIST NAME'

Missy Rad

În primul rând, lista dvs. de SP va avea nevoie de un câmp care să captureze informațiile despre contul utilizatorilor. Folosind SQL Report Builder cu o conexiune de date pentru lista SharePoint, setați un parametru pe raport pentru @User. Setați-l ca parametru ascuns. Setați valoarea implicită a acestui parametru la =Right(User!UserID,8): acest lucru vă va oferi ultimele 8 caractere ale informațiilor privind contul de utilizator, pe care le puteți filtra apoi setul de date (informațiile privind contul dvs. pot fi mai multe sau mai puține de 8 caractere, deci construiți în funcție de setările dvs.). Va trebui să setați un filtru în setul de date sau în tabelul propriu-zis pentru a compara câmpul din lista dvs. cu parametrul.