Archive

Archive for the ‘SharePoint Technologies’ Category

Could not load file or assembly Microsoft.VisualStudio.Shell.15.0

January 11, 2018 Leave a comment

CENÁRIO:

Montando o pipeline de Build e Release automático de um projeto SharePoint Add-in (SharePoint App – SharePoint Online 365) descobri que não tem um template de tarefa de build no Visual Studio Online (VSTS).

Então, parti para construir a tarefa de build vazia (Empty) onde colocamos os comandos para realizar o build.

Eis que ao tentar dar build usando o msbuild.exe me deparo com um erro bem estranho.

ERRO:

“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SharePointTools\Microsoft.VisualStudio.SharePoint.targets(395,5): Error : Could not load file or assembly ‘Microsoft.VisualStudio.Shell.15.0, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. The system cannot find the file specified.”

SOLUÇÃO:

Depois de algumas (muitas) pesquisas descobri que é necessário adicionar referências no projeto para fazer o build com sucesso. Passos para resolver:

  1. Adicionar um arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” na raiz do seu projeto (conteúdo do arquivo mais abaixo)
  2. Adicionar “<Import Project=”Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets” />” no arquivo .csproj para importar o arquivo adicionado.
  3. Pronto, agora é build com sucesso! 😉

Conteúdo do arquivo “Microsoft.VisualStudio.SharePoint.AddAssemblySearchPaths.targets”:

<Project xmlns=’http://schemas.microsoft.com/developer/msbuild/2003&#8242; >

  <UsingTask TaskName=”AddAssemblySearchPath” TaskFactory=”CodeTaskFactory” AssemblyFile=”$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll”>

    <ParameterGroup>

      <SearchPath ParameterType=”System.String” Required=”true” />

    </ParameterGroup>

    <Task>

      <Using Namespace=”System” />

      <Using Namespace=”System.IO” />

      <Using Namespace=”System.Reflection” />

      <Code Type=”Fragment” Language=”cs”>

        <![CDATA[

AppDomain.CurrentDomain.AssemblyResolve += (sender, e) =>

{

  string assemblySearchPath = Path.Combine(SearchPath, e.Name.Split(‘,’)[0] + “.dll”);

  if (File.Exists(assemblySearchPath)) return Assembly.LoadFrom(assemblySearchPath);

  return null;

};

]]>

      </Code>

    </Task>

  </UsingTask>

  <Target Name=”addAssemblySearchPaths”>

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PrivateAssemblies\” />

    <AddAssemblySearchPath SearchPath=”$(MSBuildExtensionsPath)\..\Common7\IDE\PublicAssemblies\” />

  </Target>

</Project>

Também adicionei o arquivo para download aqui: https://1drv.ms/u/s!Ass2zQvJNjQNguMdQGn53ziBBweFBg

Para resolver essa zica, contei com a ajuda do super http://diegomarques.azurewebsites.net/.

Abraço!

Microsoft Office SharePoint Server (MOSS) 2007 e SQL Server 2012 são compatíveis?

Olá! Alegre

Cenário:

A equipe decidiu atualizar os servidores e migrar alguns servidores para as versões mais atuais. O MOSS 2007 iria continuar na versão 2007, mas em outro servidor. E o SQL 2005 iria para o SQL 2012.

ERRO:

Ao tentar configurar um nova farm no SQL 2012 temos a seguinte mensagem:

“sp_dboption is deprecated and no longer exists in the master database”

SOLUÇÃO:

Na verdade não chega a ser uma solução. O SQL Server 2012 não é suportado como opção para Banco de Dados do Microsoft Office SharePoint Server (MOSS) 2007.

Ou seja, precisamos atualizar também a versão do SharePoint 2007 para, pelo menos, SharePoint 2010 SP1, caso a utilização do SQL Server 2012 seja requisito. Caso contrário, temos que utilizar outra versão de SQL Server, por exemplo SQL Server 2008 R2 (que é a última versão suportada).

 

Referência: https://technet.microsoft.com/en-us/library/cc262485(v=office.12).aspx#section3 – Determine hardware and software requirements (Office SharePoint Server)

 

Important:

Office SharePoint Server 2007 does not support SQL Server 2012 or later versions of SQL Server.

 

Caso queira prosseguir, e mesmo sem suporte, utilizar o SQL Server 2012:

http://blog.sharepointrx.com/2013/12/22/installing-microsoft-office-sharepoint-server-2007-on-sql-server-2012/

Abraço!

SharePoint 2010: Features e seus GUIDs

March 25, 2011 3 comments

Olá! Smile

Cenário:

Com frequência temos problemas ao tentar utilizar e/ou criar algo no SharePoint 2010 e ele reclama alegando que alguma feature não está ativa ou está faltando no site.

Também é com muita frequência que percebemos que essa feature que falta é uma feature nativa (que já está no SharePoint) e apenas precisamos ativá-la antes de prosseguir com nossa necessidade.

Erro:

Por exemplo, ao tentar criar um site baseado em um template que necessita de uma feature específica ativa, temos a seguinte mensagem de erro:

“The site template requires that Feature {a392da98-270b-4e85-9769-04c0fde267aa} be activated in the site collection.”

image

SOLUÇÃO:

Este feature é a feature da Infraestrutura de Publicação do SharePoint Server. Só precisamos ativar esta feature para conseguir criar o template de site mencionado no erro acima.

image

Mas, como saber qual feature precisamos ativar?

Aqui estão todas as features e GUIDs nativas do SharePoint 2010:

DisplayName

Title

ID

Scope

SolutionId

AccSrvApplication

$Resources:AccsrvWss

1cc4b32c-299b-41aa-9770-67715ea05f25

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AccSrvMSysAso

Access Services System Objects

29ea7495-fca1-4dc6-8ac1-500c247a036e

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AccSrvRestrictedList

Access Services Restricted List Definition

a4d4ee2c-a6cb-4191-ab0a-21bb5bde92fb

Web

00000000-0000-0000-0000-000000000000

AccSrvShell

$Resources:AccsrvWss

bcf89eb7-bca1-4468-bdb4-ca27f61a2292

Web

00000000-0000-0000-0000-000000000000

AccSrvSolutionGallery

$Resources:AccsrvWss

744b5fd3-3b09-4da6-9bd1-de18315b045d

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AccSrvSolutionGalleryStapler

$Resources:AccsrvWss

d5ff2d2c-8571-4c3c-87bc-779111979811

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AccSrvUserTemplate

$Resources:AccsrvWss

1a8251a0-47ab-453d-95d4-07d7ca4f8166

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AccSrvUSysAppLog

Access Services User Application Log

28101b19-b896-44f4-9264-db028f307a62

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AddDashboard

Add Dashboard

d250636f-0a26-4019-8425-a5232d592c09

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

AdminLinks

Central Administration Links

fead7313-ae6d-45dd-8260-13b563cb4c71

Web

00000000-0000-0000-0000-000000000000

AdminReportCore

Administrative Reporting Infrastructure

b8f36433-367d-49f3-ae11-f7d76b51d251

Site

00000000-0000-0000-0000-000000000000

AdminReportCorePushdown

Administrative Reporting Core Pushdown Feature

55312854-855b-4088-b09d-c5efe0fbf9d2

Farm

00000000-0000-0000-0000-000000000000

AnnouncementsList

Announcements Lists

00bfea71-d1ce-42de-9c63-a44004ce0104

Web

00000000-0000-0000-0000-000000000000

AssetLibrary

Asset Library

4bcccd62-dcaf-46dc-a7d4-e38277ef33f4

Site

00000000-0000-0000-0000-000000000000

BaseSite

SharePoint Server Standard Site Collection features

b21b090c-c796-4b0f-ac0f-7ef1659c20ae

Site

00000000-0000-0000-0000-000000000000

BaseSiteStapling

Base Site Features Stapling

97a2485f-ef4b-401f-9167-fa4fe177c6f6

Farm

00000000-0000-0000-0000-000000000000

BaseWeb

SharePoint Server Standard Site features

99fe402e-89a0-45aa-9163-85342e865dc8

Web

00000000-0000-0000-0000-000000000000

BaseWebApplication

SharePoint Server Standard Web application features

4f56f9fa-51a0-420c-b707-63ecbb494db1

WebApplication

00000000-0000-0000-0000-000000000000

BasicWebParts

Basic Web Parts

00bfea71-1c5e-4a24-b310-ba51c3eb7a57

Site

00000000-0000-0000-0000-000000000000

BDR

Document Center Enhancements

3f59333f-4ce1-406d-8a97-9ecb0ff0337f

Web

00000000-0000-0000-0000-000000000000

BICenterDashboardsLib

Dashboards Library

f979e4dc-1852-4f26-ab92-d1b2a190afc9

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BICenterDataconnectionsLib

DataConnections Library for PerformancePoint

26676156-91a0-49f7-87aa-37b1d5f0c4d0

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BICenterSampleData

Business Intelligence center sample data

3992d4ab-fa9e-4791-9158-5ee32178e88a

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BizAppsCTypes

SharePoint Portal Server Business Appications Content Type Definition

43f41342-1a37-4372-8ca0-b44d881e4434

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BizAppsFields

SPS Biz Apps Field Definition

5a979115-6b71-45a5-9881-cdc872051a69

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BizAppsListTemplates

SharePoint Portal Server Status Indicator List template

065c78be-5231-477e-a972-14177cc5b3c7

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BizAppsSiteTemplates

BizApps Site Templates

4248e21f-a816-4c88-8cab-79d82201da7b

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

BulkWorkflow

Bulk workflow process button

aeef8777-70c0-429f-8a13-f12db47a6d47

Farm

00000000-0000-0000-0000-000000000000

BulkWorkflowTimerJob

Bulk Workflow Timer Job

d992aeca-3802-483a-ab40-6c9376300b61

WebApplication

00000000-0000-0000-0000-000000000000

CallTrackList

Phone Call Memo List

239650e3-ee0b-44a0-a22a-48292402b8d8

Web

00000000-0000-0000-0000-000000000000

CirculationList

Circulation List

a568770a-50ba-4052-ab48-37d8029b3f47

Web

00000000-0000-0000-0000-000000000000

ContactsList

Contacts Lists

00bfea71-7e6d-4186-9ba8-c047ac750105

Web

00000000-0000-0000-0000-000000000000

ContentLightup

Standard User Interface Items

0f121a23-c6bc-400f-87e4-e6bbddf6916d

Farm

00000000-0000-0000-0000-000000000000

ContentTypeHub

Content Type Syndication Hub

9a447926-5937-44cb-857a-d3829301c73b

Site

00000000-0000-0000-0000-000000000000

ContentTypePublish

Content type publishing

dd903064-c9d8-4718-b4e7-8ab9bd039fff

Web

00000000-0000-0000-0000-000000000000

ContentTypeSettings

Standard Content Type Settings Links

fead7313-4b9e-4632-80a2-ff00a2d83297

Farm

00000000-0000-0000-0000-000000000000

ContentTypeSyndication

Content type syndication

34339dc9-dec4-4256-b44a-b30ff2991a64

WebApplication

00000000-0000-0000-0000-000000000000

CTypes

Standard Content Type Definitions

695b6570-a48b-4a8e-8ea5-26ea7fc1d162

Site

00000000-0000-0000-0000-000000000000

CustomList

Custom Lists

00bfea71-de22-43b2-a848-c05709900100

Web

00000000-0000-0000-0000-000000000000

DataConnectionLibrary

Data Connections Feature

00bfea71-dbd7-4f72-b8cb-da7ac0440130

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

DataConnectionLibraryStapling

Data Connection Library

cdfa39c6-6413-4508-bccf-bf30368472b3

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

DataSourceLibrary

Data Source Libraries

00bfea71-f381-423d-b9d1-da7a54c50110

Web

00000000-0000-0000-0000-000000000000

DeploymentLinks

Content Deployment

ca2543e6-29a1-40c1-bba9-bd8510a4c17b

Web

00000000-0000-0000-0000-000000000000

DiscussionsList

Discussion Lists

00bfea71-6a49-43fa-b535-d15c05500108

Web

00000000-0000-0000-0000-000000000000

DMContentTypeSettings

DM Content Type Setting Links

1ec2c859-e9cb-4d79-9b2b-ea8df09ede22

Farm

00000000-0000-0000-0000-000000000000

DocId

Document ID Service

b50e3104-6812-424f-a011-cc90e6327318

Site

00000000-0000-0000-0000-000000000000

DocumentLibrary

Document Libraries

00bfea71-e717-4e80-aa17-d0c71b360101

Web

00000000-0000-0000-0000-000000000000

DocumentManagement

Document Sets metadata synchronization

3a4ce811-6fe0-4e97-a6ae-675470282cf2

WebApplication

00000000-0000-0000-0000-000000000000

DocumentRouting

Content Organizer

7ad5272a-2694-4349-953e-ea5ef290e97c

Web

00000000-0000-0000-0000-000000000000

DocumentRoutingResources

Document Routing Resources

0c8a9a47-22a9-4798-82f1-00e62a96006e

Site

00000000-0000-0000-0000-000000000000

DocumentSet

Document Sets

3bae86a2-776d-499d-9db8-fa4cdc7884f8

Site

00000000-0000-0000-0000-000000000000

DownloadFromOfficeDotCom

Office.com Entry Points from SharePoint

a140a1ac-e757-465d-94d4-2ca25ab2c662

Farm

00000000-0000-0000-0000-000000000000

EMailRouting

E-mail Integration with Content Organizer

d44a1358-e800-47e8-8180-adf2d0f77543

Web

00000000-0000-0000-0000-000000000000

EnhancedHtmlEditing

Enhanced Html Editing

81ebc0d6-8fb2-4e3f-b2f8-062640037398

Farm

00000000-0000-0000-0000-000000000000

EnhancedTheming

Enhanced Theming

068bc832-4951-11dc-8314-0800200c9a66

Site

00000000-0000-0000-0000-000000000000

EnterpriseWiki

Enterprise Wiki

76d688ad-c16e-4cec-9b71-7b7f0d79b9cd

Web

00000000-0000-0000-0000-000000000000

EnterpriseWikiLayouts

Enterprise Wiki Layouts

a942a218-fa43-4d11-9d85-c01e3e3a37cb

Site

00000000-0000-0000-0000-000000000000

EventsList

Events Lists

00bfea71-ec85-4903-972d-ebe475780106

Web

00000000-0000-0000-0000-000000000000

ExcelServer

Excel Services Farm Feature

e4e6a041-bc5b-45cb-beab-885a27079f74

Farm

a992b0f0-7b6b-4315-b687-649dcaeef726

ExcelServerSite

Excel Services Site Feature

3cb475e7-4e87-45eb-a1f3-db96ad7cf313

Site

a992b0f0-7b6b-4315-b687-649dcaeef726

ExcelServerWebApplication

e15ed6d2-4af1-4361-89d3-2acf8cd485de

WebApplication

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

ExcelServerWebPart

Excel Services Site Feature

4c42ab64-55af-4c7c-986a-ac216a6e0c0e

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

ExcelServerWebPartStapler

Excel Services Farm Feature

c6ac73de-1936-47a4-bdff-19a6fc3ba490

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

ExpirationWorkflow

Disposition Approval Workflow

c85e5759-f323-4efb-b548-443d2216efb5

Site

00000000-0000-0000-0000-000000000000

ExternalList

External Lists

00bfea71-9549-43f8-b978-e47e54a10600

Web

00000000-0000-0000-0000-000000000000

FacilityList

Resources List

58160a6b-4396-4d6e-867c-65381fb5fbc9

Web

00000000-0000-0000-0000-000000000000

FastFarmFeatureActivation

FAST Search for SharePoint Master Job Provisioning

d2d98dc8-c7e9-46ec-80a5-b38f039c16be

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

FCGroupsList

Manage Resources

08386d3d-7cc0-486b-a730-3b4cfe1b5509

Web

00000000-0000-0000-0000-000000000000

FeaturePushdown

Feature Pushdown Links

0125140f-7123-4657-b70a-db9aa1f209e5

Farm

00000000-0000-0000-0000-000000000000

Fields

Standard Column Definitions

ca7bd552-10b1-4563-85b9-5ed1d39c962a

Site

00000000-0000-0000-0000-000000000000

GanttTasksList

Gantt Chart Tasks Lists

00bfea71-513d-4ca0-96c2-6a47775c0119

Web

00000000-0000-0000-0000-000000000000

GBWProvision

Group Work Provisioning

6e8a2add-ed09-4592-978e-8fa71e6f117c

Web

00000000-0000-0000-0000-000000000000

GBWWebParts

GroupBoardWebParts

3d25bd73-7cd4-4425-b8fb-8899977f73de

Web

00000000-0000-0000-0000-000000000000

GlobalWebParts

Global Web Parts

319d8f70-eb3a-4b44-9c79-2087a87799d6

Farm

00000000-0000-0000-0000-000000000000

GridList

Grid Lists

00bfea71-3a1d-41d3-a0ee-651d11570120

Web

00000000-0000-0000-0000-000000000000

GroupWork

Group Work Lists

9c03e124-eef7-4dc6-b5eb-86ccd207cb87

Web

00000000-0000-0000-0000-000000000000

HelpLibrary

Help

071de60d-4b02-4076-b001-b456e93146fe

Site

00000000-0000-0000-0000-000000000000

Hold

Hold and eDiscovery

9e56487c-795a-4077-9425-54a1ecb84282

Web

00000000-0000-0000-0000-000000000000

HolidaysList

Holidays List

9ad4c2d4-443b-4a94-8534-49a23f20ba3c

Web

00000000-0000-0000-0000-000000000000

IMEDicList

Microsoft IME Dictionary List

1c6a572c-1b58-49ab-b5db-75caf50692e6

Web

00000000-0000-0000-0000-000000000000

InPlaceRecords

In Place Records Management

da2e115b-07e4-49d9-bb2c-35e93bb9fca9

Site

00000000-0000-0000-0000-000000000000

ipfsAdminLinks

Admin Links for InfoPath Forms Services.

a10b6aa4-135d-4598-88d1-8d4ff5691d13

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

IPFSAdminWeb

Admin Links for InfoPath Forms Services.

750b8e49-5213-4816-9fa2-082900c0201a

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

IPFSSiteFeatures

InfoPath Forms Services support

c88c4ff1-dbf5-4649-ad9f-c6c426ebcbf5

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

IPFSTenantFormsConfig

InfoPath Forms Services Tenant Administration

15845762-4ec4-4606-8993-1c0512a98680

Web

00000000-0000-0000-0000-000000000000

IPFSTenantWebProxyConfig

InfoPath Forms Services Web Service Proxy Administration

3c577815-7658-4d4f-a347-cfbb370700a7

Web

00000000-0000-0000-0000-000000000000

IPFSWebFeatures

InfoPath Forms Services support

a0e5a010-1329-49d4-9e09-f280cdbed37d

Web

00000000-0000-0000-0000-000000000000

IssuesList

Issues Lists

00bfea71-5932-4f9c-ad71-1557e5751100

Web

00000000-0000-0000-0000-000000000000

IssueTrackingWorkflow

Three-state workflow

fde5d850-671e-4143-950a-87b473922dc7

Site

00000000-0000-0000-0000-000000000000

LegacyDocumentLibrary

Document Libraries

6e53dd27-98f2-4ae5-85a0-e9a8ef4aa6df

Web

00000000-0000-0000-0000-000000000000

LegacyWorkflows

SharePoint 2007 Workflows

c845ed8d-9ce5-448c-bd3e-ea71350ce45b

Site

00000000-0000-0000-0000-000000000000

LinksList

Links Lists

00bfea71-2062-426c-90bf-714c59600103

Web

00000000-0000-0000-0000-000000000000

ListTargeting

List Content Targeting

fc33ba3b-7919-4d7e-b791-c6aeccf8f851

Farm

00000000-0000-0000-0000-000000000000

LocalSiteDirectoryControl

SharePoint Portal Server Local Site Directory Capture Control

14aafd3a-fcb9-4bb7-9ad7-d8e36b663bbd

Site

00000000-0000-0000-0000-000000000000

LocalSiteDirectoryMetaData

Local Site Directory MetaData Capture Feature

8f15b342-80b1-4508-8641-0751e2b55ca6

Web

00000000-0000-0000-0000-000000000000

LocalSiteDirectorySettingsLink

Site Settings Link to Local Site Directory Settings page.

e978b1a6-8de7-49d0-8600-09a250354e14

Site

00000000-0000-0000-0000-000000000000

LocationBasedPolicy

Library and Folder Based Retention

063c26fa-3ccc-4180-8a84-b6f98e991df3

Site

00000000-0000-0000-0000-000000000000

ManageUserProfileServiceApplication

Manage Profile Service Application

c59dbaa9-fa01-495d-aaa3-3c02cc2ee8ff

Farm

00000000-0000-0000-0000-000000000000

MasterSiteDirectoryControl

SharePoint Portal Server Master Site Directory Capture Control

8a663fe0-9d9c-45c7-8297-66365ad50427

Farm

00000000-0000-0000-0000-000000000000

MetaDataNav

Metadata Navigation and Filtering

7201d6a4-a5d3-49a1-8c19-19c4bac6e668

Web

00000000-0000-0000-0000-000000000000

MobileEwaFarm

$Resources:xlsrv

5a020a4f-c449-4a65-b07d-f2cc2d8778dd

Farm

a992b0f0-7b6b-4315-b687-649dcaeef726

MobileExcelWebAccess

Excel Mobile Viewer Feature

e995e28b-9ba8-4668-9933-cf5c146d7a9f

Site

a992b0f0-7b6b-4315-b687-649dcaeef726

MobilityRedirect

Mobility Shortcut URL

f41cc668-37e5-4743-b4a8-74d1db3fd8a4

Web

00000000-0000-0000-0000-000000000000

MossChart

Chart Web Part

875d1044-c0cf-4244-8865-d2a0039c2a49

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

MpsWebParts

Meetings Workspaces Web Parts

39dd29fb-b6f5-4697-b526-4d38de4893e5

Web

00000000-0000-0000-0000-000000000000

MySite

My Site

69cc9662-d373-47fc-9449-f18d11ff732c

Farm

00000000-0000-0000-0000-000000000000

MySiteBlog

My Site Blogs

863da2ac-3873-4930-8498-752886210911

Site

00000000-0000-0000-0000-000000000000

MySiteCleanup

My Site Cleanup Feature

0faf7d1b-95b1-4053-b4e2-19fd5c9bbc88

Farm

00000000-0000-0000-0000-000000000000

MySiteHost

My Site Host

49571cd1-b6a1-43a3-bf75-955acc79c8d8

Site

00000000-0000-0000-0000-000000000000

MySiteHostPictureLibrary

Shared Picture Library for Organizations logos

5ede0a86-c772-4f1d-a120-72e734b3400c

Web

00000000-0000-0000-0000-000000000000

MySiteLayouts

My Site Layouts Feature

6928b0e5-5707-46a1-ae16-d6e52522d52b

Site

00000000-0000-0000-0000-000000000000

MySiteNavigation

My Site Navigation

6adff05c-d581-4c05-a6b9-920f15ec6fd9

Web

00000000-0000-0000-0000-000000000000

MySitePersonalSite

My Site Personal Site Configuration

f661430e-c155-438e-a7c6-c68648f1b119

Site

00000000-0000-0000-0000-000000000000

MySiteQuickLaunch

My Site Layouts Feature

034947cc-c424-47cd-a8d1-6014f0e36925

Web

00000000-0000-0000-0000-000000000000

Navigation

Portal Navigation

89e0306d-453b-4ec5-8d68-42067cdbf98e

Site

00000000-0000-0000-0000-000000000000

NavigationProperties

Portal Navigation Properties

541f5f57-c847-4e16-b59a-b31e90e6f9ea

Web

00000000-0000-0000-0000-000000000000

NoCodeWorkflowLibrary

No-code Workflow Libraries

00bfea71-f600-43f6-a895-40c0de7b0117

Web

00000000-0000-0000-0000-000000000000

ObaProfilePages

BDC Profile Pages Feature

683df0c0-20b7-4852-87a3-378945158fab

Web

00000000-0000-0000-0000-000000000000

ObaProfilePagesTenantStapling

BDC Profile Pages Tenant Stapling Feature

90c6c1e5-3719-4c52-9f36-34a97df596f7

Farm

00000000-0000-0000-0000-000000000000

ObaSimpleSolution

Offline Synchronization for External Lists

d250636f-0a26-4019-8425-a5232d592c01

Web

00000000-0000-0000-0000-000000000000

ObaStaple

Offline Synchronization for External Lists

f9cb1a2a-d285-465a-a160-7e3e95af1fdd

Farm

00000000-0000-0000-0000-000000000000

OffWFCommon

Microsoft Office Server workflows

c9c9515d-e4e2-4001-9050-74f980f93160

Site

00000000-0000-0000-0000-000000000000

OpenInClient

Open documents in client applications

8a4b8de2-6fd8-41e9-923c-c7c3c00f8295

Site

00000000-0000-0000-0000-000000000000

OrganizationsClaimHierarchyProvider

Organizations Claim Hierarchy Provider

9b0293a7-8942-46b0-8b78-49d29a9edd53

Farm

00000000-0000-0000-0000-000000000000

OSearchBasicFeature

Office Server Site Search

bc29e863-ae07-4674-bd83-2c6d0aa5623f

WebApplication

00000000-0000-0000-0000-000000000000

OSearchCentralAdminLinks

Search Central Admin Links

c922c106-7d0a-4377-a668-7f13d52cb80f

Farm

00000000-0000-0000-0000-000000000000

OSearchEnhancedFeature

Office Server Enterprise Search

4750c984-7721-4feb-be61-c660c6190d43

WebApplication

00000000-0000-0000-0000-000000000000

OSearchHealthReports

$Resources:HealthReportsFeatureTitle;

e792e296-5d7f-47c7-9dfa-52eae2104c3b

Site

00000000-0000-0000-0000-000000000000

OSearchHealthReportsPushdown

Health Reports Pushdown Feature

09fe98f3-3324-4747-97e5-916a28a0c6c0

Farm

00000000-0000-0000-0000-000000000000

OSearchPortalAdminLinks

Search Admin Portal Links and Navbar

edf48246-e4ee-4638-9eed-ef3d0aee7597

Farm

00000000-0000-0000-0000-000000000000

OsrvLinks

Shared Services Administration Links

068f8656-bea6-4d60-a5fa-7f077f8f5c20

Web

00000000-0000-0000-0000-000000000000

OssNavigation

Shared Services Navigation

10bdac29-a21a-47d9-9dff-90c7cae1301e

Web

00000000-0000-0000-0000-000000000000

OSSSearchSearchCenterUrlFeature

Search Center URL

7acfcb9d-8e8f-4979-af7e-8aed7e95245e

Web

00000000-0000-0000-0000-000000000000

OSSSearchSearchCenterUrlSiteFeature

Site collection level Search Center Url Feature

7ac8cc56-d28e-41f5-ad04-d95109eb987a

Site

00000000-0000-0000-0000-000000000000

PageConverters

Document to Page Converters

14173c38-5e2d-4887-8134-60f9df889bad

WebApplication

00000000-0000-0000-0000-000000000000

PersonalizationSite

Personalization Site

ed5e77f7-c7b1-4961-a659-0de93080fa36

Web

00000000-0000-0000-0000-000000000000

PictureLibrary

Picture Libraries

00bfea71-52d4-45b3-b544-b1c71b620109

Web

00000000-0000-0000-0000-000000000000

PortalLayouts

Portal Layouts Feature

5f3b0127-2f1d-4cfd-8dd2-85ad1fb00bfc

Site

00000000-0000-0000-0000-000000000000

PPSDatasourceLib

PerformancePoint Data Source Library Template

5d220570-df17-405e-b42d-994237d60ebf

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSMonDatasourceCtype

PerformancePoint Datasource Content Type definition

05891451-f0c4-4d4e-81b1-0dabd840bad4

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSSiteCollectionMaster

PerformancePoint Services Site Collection Features

a1cb5b7f-e5e9-421b-915f-bf519b0760ef

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSSiteMaster

PerformancePoint Services Site Features

0b07a7f4-8bb8-4ec0-a31b-115732b9584d

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSSiteStapling

PPS Site Stapling

8472208f-5a01-4683-8119-3cea50bea072

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSWebParts

PerformancePoint Monitoring

ee9dbf20-1758-401e-a169-7db0a6bbccb2

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSWorkspaceCtype

PerformancePoint Content Type Definition

f45834c7-54f6-48db-b7e4-a35fa470fc9b

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PPSWorkspaceList

PerformancePoint Content List

481333e1-a246-4d89-afab-d18c6fe344ce

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PremiumSite

SharePoint Server Enterprise Site Collection features

8581a8a7-cf16-4770-ac54-260265ddb0b2

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PremiumSiteStapling

Premium Site Features Stapling

a573867a-37ca-49dc-86b0-7d033a7ed2c8

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PremiumWeb

SharePoint Server Enterprise Site features

0806d127-06e6-447a-980e-2e90b03101b8

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

PremiumWebApplication

SharePoint Server Enterprise Web application features

0ea1c3b6-6ac0-44aa-9f3f-05e8dbe6d70b

WebApplication

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

ProfileSynch

Profile Synchronization Feature

af847aa9-beb6-41d4-8306-78e41af9ce25

Farm

00000000-0000-0000-0000-000000000000

Publishing

Publishing

22a9ef51-737b-4ff2-9346-694633fe4416

Web

00000000-0000-0000-0000-000000000000

PublishingLayouts

Page Layouts and Master Pages Pack

d3f51be2-38a8-4e44-ba84-940d35be1566

Site

00000000-0000-0000-0000-000000000000

PublishingPrerequisites

Publishing Prerequisites

a392da98-270b-4e85-9769-04c0fde267aa

Site

00000000-0000-0000-0000-000000000000

PublishingResources

Publishing Resources

aebc918d-b20f-4a11-a1db-9ed84d79c87e

Site

00000000-0000-0000-0000-000000000000

PublishingSite

SharePoint Server Publishing Infrastructure

f6924d36-2fa8-4f0b-b16d-06b7250180fa

Site

00000000-0000-0000-0000-000000000000

PublishingStapling

Publishing Features Stapling

001f4bd7-746d-403b-aa09-a6cc43de7942

Farm

00000000-0000-0000-0000-000000000000

PublishingTimerJobs

Publishing Timer Jobs

20477d83-8bdb-414e-964b-080637f7d99b

WebApplication

00000000-0000-0000-0000-000000000000

PublishingWeb

SharePoint Server Publishing

94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb

Web

00000000-0000-0000-0000-000000000000

Ratings

Ratings

915c240e-a6cc-49b8-8b2c-0bff8b553ed3

Site

00000000-0000-0000-0000-000000000000

RecordResources

Record Resources

5bccb9a4-b903-4fd1-8620-b795fa33c9ba

Site

00000000-0000-0000-0000-000000000000

RecordsCenter

Records Center Configuration

e0a45587-1069-46bd-bf05-8c8db8620b08

Web

00000000-0000-0000-0000-000000000000

RecordsManagement

Records Management

6d127338-5e7d-4391-8f62-a11e43b1d404

Farm

00000000-0000-0000-0000-000000000000

RedirectPageContentTypeBinding

SharePoint Portal Server Redirect Page Content Type Binding Feature

306936fd-9806-4478-80d1-7e397bfa6474

Web

00000000-0000-0000-0000-000000000000

RelatedLinksScopeSettingsLink

Related Links scope settings page

e8734bb6-be8e-48a1-b036-5a40ff0b8a81

Web

00000000-0000-0000-0000-000000000000

ReportCenterSampleData

Report Center Sample Data

c5d947d6-b0a2-4e07-9929-8e54f5a9fff9

Web

00000000-0000-0000-0000-000000000000

Reporting

Reporting

7094bd89-2cfe-490a-8c7e-fbace37b4a34

Site

00000000-0000-0000-0000-000000000000

ReportListTemplate

SharePoint Portal Server Report Library

2510d73f-7109-4ccc-8a1c-314894deeb3a

Web

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

ReviewPublishingSPD

Publishing Approval Workflow

a44d2aa3-affc-4d58-8db4-f4a3af053188

Site

00000000-0000-0000-0000-000000000000

ReviewPublishingSPD1033

Publishing Workflow – SharePoint 2010 (en-US)

19f5f68e-1b92-4a02-b04d-61810ead0409

Site

00000000-0000-0000-0000-000000000000

ReviewWorkflows

Routing Workflows

02464c6a-9d07-4f30-ba04-e9035cf54392

Site

00000000-0000-0000-0000-000000000000

ReviewWorkflowsSPD

Routing Workflows – SharePoint 2010

b5934f65-a844-4e67-82e5-92f66aafe912

Site

00000000-0000-0000-0000-000000000000

ReviewWorkflowsSPD1033

Routing Workflows – SharePoint 2010 (en-US)

3bc0c1e1-b7d5-4e82-afd7-9f7e59b60409

Site

00000000-0000-0000-0000-000000000000

ScheduleList

Schedule and Reservations List

636287a7-7f62-4a6e-9fcc-081f4672cbf8

Web

00000000-0000-0000-0000-000000000000

SearchAdminWebParts

Microsoft Search Administration Web Parts

c65861fa-b025-4634-ab26-22a23e49808f

Web

00000000-0000-0000-0000-000000000000

SearchAndProcess

Search And Process

1dbf6063-d809-45ea-9203-d3ba4a64f86d

WebApplication

00000000-0000-0000-0000-000000000000

SearchExtensions

Search extensions

5eac763d-fbf5-4d6f-a76b-eded7dd7b0a5

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

SearchServerWizardFeature

$Resources:SearchServerWizard_Feature_Title;

e09cefae-2ada-4a1d-aee6-8a8398215905

Site

00000000-0000-0000-0000-000000000000

SearchWebParts

Search Server Web Parts

eaf6a128-0482-4f71-9a2f-b1c650680e77

Site

00000000-0000-0000-0000-000000000000

SharedServices

Shared Services Infrastructure

f324259d-393d-4305-aa48-36e8d9a7a0d6

Farm

00000000-0000-0000-0000-000000000000

SignaturesWorkflow

Collect Signatures Workflow

6c09612b-46af-4b2f-8dfc-59185c962a29

Site

00000000-0000-0000-0000-000000000000

SignaturesWorkflowSPD

Collect Signatures Workflow – SharePoint 2010

c4773de6-ba70-4583-b751-2a7b1dc67e3a

Site

00000000-0000-0000-0000-000000000000

SignaturesWorkflowSPD1033

Collect Signatures Workflow – SharePoint 2010 (en-US)

a42f749f-8633-48b7-9b22-403b40190409

Site

00000000-0000-0000-0000-000000000000

SiteHelp

Custom Site Collection Help

57ff23fc-ec05-4dd8-b7ed-d93faa7c795d

Site

00000000-0000-0000-0000-000000000000

SiteSettings

Standard Site Settings Links

fead7313-4b9e-4632-80a2-98a2a2d83297

Farm

00000000-0000-0000-0000-000000000000

SitesList

Sites List creation feature

a311bf68-c990-4da3-89b3-88989a3d7721

Web

00000000-0000-0000-0000-000000000000

SkuUpgradeLinks

Sku Upgrade Links

937f97e9-d7b4-473d-af17-b03951b2c66b

Farm

00000000-0000-0000-0000-000000000000

SlideLibrary

Slide Library

0be49fe9-9bc9-409d-abf9-702753bd878d

Web

00000000-0000-0000-0000-000000000000

SlideLibraryActivation

Slide Library Activation

65d96c6b-649a-4169-bf1d-b96505c60375

Farm

00000000-0000-0000-0000-000000000000

SocialRibbonControl

Social Tags and Note Board Ribbon Controls

756d8a58-4e24-4288-b981-65dc93f9c4e5

Farm

00000000-0000-0000-0000-000000000000

SpellChecking

Spell Checking

612d671e-f53d-4701-96da-c3a4ee00fdc5

Farm

00000000-0000-0000-0000-000000000000

SPSDisco

Portal DiscoPage Feature

713a65a1-2bc7-4e62-9446-1d0b56a8bf7f

Farm

00000000-0000-0000-0000-000000000000

SPSearchFeature

Microsoft SharePoint Foundation Search feature

2ac1da39-c101-475c-8601-122bc36e3d67

WebApplication

00000000-0000-0000-0000-000000000000

SRPProfileAdmin

User Profile Administration Links

c43a587e-195b-4d29-aba8-ebb22b48eb1a

Farm

00000000-0000-0000-0000-000000000000

SSSvcAdmin

Secure Store Service Admin

35f680d4-b0de-4818-8373-ee0fca092526

Web

00000000-0000-0000-0000-000000000000

StapledWorkflows

Office Workflows

ee21b29b-b0d0-42c6-baff-c97fd91786e6

Farm

00000000-0000-0000-0000-000000000000

SurveysList

Surveys Lists

00bfea71-eb8a-40b1-80c7-506be7590102

Web

00000000-0000-0000-0000-000000000000

TasksList

Tasks Lists

00bfea71-a83e-497e-9ba0-7a5c597d0107

Web

00000000-0000-0000-0000-000000000000

TaxonomyFeatureStapler

Taxonomy feature stapler

415780bf-f710-4e2c-b7b0-b463c7992ef0

Farm

00000000-0000-0000-0000-000000000000

TaxonomyFieldAdded

Register taxonomy site wide field added event receiver

73ef14b1-13a9-416b-a9b5-ececa2b0604c

Site

00000000-0000-0000-0000-000000000000

TaxonomyTenantAdmin

Taxonomy Tenant Administration

7d12c4c3-2321-42e8-8fb6-5295a849ed08

Web

00000000-0000-0000-0000-000000000000

TaxonomyTenantAdminStapler

Taxonomy Tenant Administration Stapler

8fb893d6-93ee-4763-a046-54f9e640368d

Farm

00000000-0000-0000-0000-000000000000

TaxonomyTimerJobs

Create the taxonomy timer jobs

48ac883d-e32e-4fd6-8499-3408add91b53

WebApplication

00000000-0000-0000-0000-000000000000

TeamCollab

Team Collaboration Lists

00bfea71-4ea5-48d4-a4ad-7ea5c011abe5

Web

00000000-0000-0000-0000-000000000000

TemplateDiscovery

Connect to Office Ribbon Controls

ff48f7e6-2fa1-428d-9a15-ab154762043d

Farm

00000000-0000-0000-0000-000000000000

TenantAdminBDC

Tenant Business Data Connectivity Administration

0a0b2e8f-e48e-4367-923b-33bb86c1b398

Web

00000000-0000-0000-0000-000000000000

TenantAdminBDCStapling

Tenant Business Data Connectivity Administration Stapling

b5d169c9-12db-4084-b68d-eef9273bd898

Farm

00000000-0000-0000-0000-000000000000

TenantAdminDeploymentLinks

Tenant Administration Content Deployment Configuration

99f380b4-e1aa-4db0-92a4-32b15e35b317

Web

00000000-0000-0000-0000-000000000000

TenantAdminLinks

Tenant Administration Links

98311581-29c5-40e8-9347-bd5732f0cb3e

Web

00000000-0000-0000-0000-000000000000

TenantAdminSecureStore

$Resources:obacore

b738400a-f08a-443d-96fa-a852d0356bba

Web

00000000-0000-0000-0000-000000000000

TenantAdminSecureStoreStapling

Secure Store Service Stapling Feature

6361e2a8-3bc4-4ca4-abbb-3dfbb727acd7

Farm

00000000-0000-0000-0000-000000000000

TenantProfileAdmin

Tenant User Profile Application

32ff5455-8967-469a-b486-f8eaf0d902f9

Web

00000000-0000-0000-0000-000000000000

TenantProfileAdminStapling

Tenant User Profile Application Stapling

3d4ea296-0b35-4a08-b2bf-f0a8cabd1d7f

Farm

00000000-0000-0000-0000-000000000000

TimeCardList

Time Card List

d5191a77-fa2d-4801-9baf-9f4205c9e9d2

Web

00000000-0000-0000-0000-000000000000

TranslationWorkflow

Translation Management Workflow

c6561405-ea03-40a9-a57f-f25472942a22

Site

00000000-0000-0000-0000-000000000000

TransMgmtFunc

Translation Management Library

82e2ea42-39e2-4b27-8631-ed54c1cfc491

Farm

00000000-0000-0000-0000-000000000000

TransMgmtLib

Translation Management Library

29d85c25-170c-4df9-a641-12db0b9d4130

Web

00000000-0000-0000-0000-000000000000

UpgradeOnlyFile

$Resources:UpgradeOnlyFile_Feature_Title;

2fa4db13-4109-4a1d-b47c-c7991d4cc934

Web

00000000-0000-0000-0000-000000000000

UserMigrator

Shared Service Provider User Migrator

f0deabbb-b0f6-46ba-8e16-ff3b44461aeb

Farm

00000000-0000-0000-0000-000000000000

V2VPublishedLinks

V2V Published Links Upgrade

f63b7696-9afc-4e51-9dfd-3111015e9a60

Site

00000000-0000-0000-0000-000000000000

V2VPublishingLayouts

V2V Publishing Layouts Upgrade

2fbbe552-72ac-11dc-8314-0800200c9a66

Site

00000000-0000-0000-0000-000000000000

ViewFormPagesLockDown

Restrict Limited Access Permissions

7c637b23-06c4-472d-9a9a-7c175762c5c4

Site

00000000-0000-0000-0000-000000000000

VisioProcessRepository

Visio Process Repository

7e0aabee-b92b-4368-8742-21ab16453d01

Web

00000000-0000-0000-0000-000000000000

VisioProcessRepositoryFeatureStapling

Visio Process Repository

7e0aabee-b92b-4368-8742-21ab16453d00

Farm

00000000-0000-0000-0000-000000000000

VisioProcessRepositoryUs

Visio Process Repository

7e0aabee-b92b-4368-8742-21ab16453d02

Web

00000000-0000-0000-0000-000000000000

VisioServer

Visio Web Access

5fe8e789-d1b7-44b3-b634-419c531cfdca

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

VisioWebAccess

Visio Web Access

9fec40ea-a949-407d-be09-6cba26470a0c

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

WACentralAdminCustomReports

Web Analytics Central Admin Customize Reports

3ce24023-95a1-4778-85b0-8e9b2bcacc80

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

WACentralAdminReports

Web Analytics Central Admin Reports

786eaa5b-85d7-4ea0-8998-0b62c8befd94

Site

00000000-0000-0000-0000-000000000000

WACustomReports

Web Analytics Customize Reports functionality

af6d9aec-7c38-4dda-997f-cc1ddbb87c92

Site

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

WAEnterpriseFeatureStapler

Web Analytics Enterprise Feature Stapler

c0c2628d-0f59-4873-9cba-100dad2313cb

Farm

7ed6cd55-b479-4eb7-a529-e99a24c10bd3

WAFeatureStapler

Web Analytics Feature Stapler

9d46d0d4-af7b-4f2e-8f84-9466ab25766c

Farm

5fee007f-3729-4a78-86fb-688d8597713c

WAMaster

Advanced Web Analytics

c04234f4-13b8-4462-9108-b4f5159beae6

Site

5fee007f-3729-4a78-86fb-688d8597713c

WAReports

Advanced Web Analytics Reports

2acf27a5-f703-4277-9f5d-24d70110b18b

Site

5fee007f-3729-4a78-86fb-688d8597713c

WAWhatsPopularWebPart

Web Analytics Web Part

8e947bf0-fe40-4dff-be3d-a8b88112ade6

Site

5fee007f-3729-4a78-86fb-688d8597713c

WebPageLibrary

Wiki Page Library

00bfea71-c796-4402-9f2f-0eb9a6e71b18

Web

00000000-0000-0000-0000-000000000000

WebPartAdderGroups

Web Part Adder default groups

2ed1c45e-a73b-4779-ae81-1524e4de467a

Site

00000000-0000-0000-0000-000000000000

WhatsNewList

What’s New List

d7670c9c-1c29-4f44-8691-584001968a74

Web

00000000-0000-0000-0000-000000000000

WhereaboutsList

$Resources:core

9c2ef9dc-f733-432e-be1c-2e79957ea27b

Web

00000000-0000-0000-0000-000000000000

WikiPageHomePage

Wiki Page Home Page

00bfea71-d8fe-4fec-8dad-01c19a6e4053

Web

00000000-0000-0000-0000-000000000000

WikiWelcome

WikiWelcome

8c6a6980-c3d9-440e-944c-77f93bc65a7e

Web

00000000-0000-0000-0000-000000000000

WorkflowHistoryList

Workflow History Lists

00bfea71-4ea5-48d4-a4ad-305cf7030140

Web

00000000-0000-0000-0000-000000000000

workflowProcessList

WorkflowProcessList Feature

00bfea71-2d77-4a75-9fca-76516689e21a

Web

00000000-0000-0000-0000-000000000000

Workflows

Workflows

0af5989a-3aea-4519-8ab0-85d91abe39ff

Site

00000000-0000-0000-0000-000000000000

XmlFormLibrary

XML Form Libraries

00bfea71-1e1d-4562-b56a-f05371bb0115

Web

Abraço!

Sua aplicação customizada escrevendo no Logs (ULS) do SharePoint!

January 4, 2011 4 comments

Olá! Smile

Overview:

O SharePoint possui uma arquitetura gigantesca! Diversos recursos (muitas vezes subutilizados), diversos meios de atender a mesma demanda de maneiras diferentes.

Aí, vem a pergunta: Por que criar algo do zero e não aproveitar o que SharePoint já possui? Ele deixa você fazer isso, não tenha medo! J

Leitura recomendada: http://rodrigoaromano.wordpress.com/2010/10/27/introduo-ao-desenvolvimento-com-sharepoint-2010/.

Vamos utilizar então, a própria estrutura do SharePoint para gravar erros (ou informações para monitorar a saúde da aplicação) nos LOGS (%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\LOGS) do SharePoint! J

Cenário:

Muitas vezes, desenvolvendo aplicações para SharePoint, precisamos escrever logs, tratar exceções ou, simplesmente monitorar (trace) da saúde da nossa aplicação.

Alguns escrevem logs de erro em bibliotecas do SharePoint, outros, escrevem no próprio Event Viewer da máquina (geralmente sempre barrado por questões de segurança) ou só jogam o erro em Label para o usuário (muitas vezes também, nem tratam os erros! Gravíssimo!).

Pretendo escrever um artigo mais aprimorado sobre como escrever no LOG. Mas, por enquanto, vamos com esta dica rápida.

SOLUÇÃO:

Não há muito mistério. Para escrever no Log do SharePoint, façamos o seguinte:

Criei um formulário (Visual WebPart: ) com dois TextBox’s (txtValor1 e txtValor2), um Label Resultado (lblResultado) e um Label de Erro (lblErro). Além de um Button (btnSomar) para somar os valores.

Ficando assim:

image

E aqui, o evento do botão de Somar:

Code Snippet
  1. protected void btnSomar_Click(object sender, EventArgs e)
  2.         {
  3.             //evento do botão de somar valores
  4.             try
  5.             {
  6.                 //transformando o valor to TextBox em número inteiro para realizarmos a soma
  7.                 //**aqui forçamos o erro passando um Texto ao invés de um número, deverá gerar uma exceção**
  8.                 int valor1 = Convert.ToInt32(txtValor1.Text);
  9.                 int valor2 = Convert.ToInt32(txtValor2.Text);
  10.                 int resultado = valor1 + valor2;
  11.  
  12.                 lblResultado.Text = resultado.ToString();
  13.             }
  14.             catch (Exception ex)
  15.             {
  16.                 //instanciamos o serviço de Diagnótiscos
  17.                 SPDiagnosticsService diagnosticSvc = SPDiagnosticsService.Local;
  18.  
  19.                 //criamso a categoria, com seus devidos parametros
  20.                 SPDiagnosticsCategory categoria = new SPDiagnosticsCategory("SharePointDemo – MeuTrace", TraceSeverity.Monitorable, EventSeverity.Information);
  21.  
  22.                 //escrevemos no LOG
  23.                 diagnosticSvc.WriteTrace(0, categoria, TraceSeverity.Monitorable, ex.ToString());
  24.                 
  25.                 //exibe mensagem amigável para o usuário, caso necessário.              
  26.                 lblErro.Text = ex.Message;
  27.             }
  28.         }

Ao gerar exceção:

clip_image002

E no Log do SharePoint (%CommonProgramFiles%\Microsoft Shared\Web Server Extensions\14\LOGS):

“01/04/2011 19:09:12.98 w3wp.exe (0x1620) 0x24C8 Unknown SharePointDemo – MeuTrace 0000 Monitorable System.FormatException: Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) at System.Convert.ToInt32(String value) at SharePointWebParts.Demo.EscrevendoLogDoSharePoint.EscrevendoLogDoSharePointUserControl.btnSomar_Click(Object sender, EventArgs e) 738d9733-dac9-4291-a2c8-6626769b07bb”

clip_image004

É isso aí! =)

Abraço!

Trabalhando com campos HyperLink no SharePoint programaticamente

December 21, 2010 1 comment

Olá! Smile

Overview:

O SharePoint possui diversos tipos de campos (colunas) nativos, que já acompanham o produto, para adequar a sua informação. Por exemplo, campo tipo texto, texto com várias linhas, números, etc.

Um desses campos, é o campo do tipo HyperLink. Neste campo nós atribuímos o valor e a descrição do link, ou seja, podemos colocar o link de fato e também “label” do link. Algo assim: Teste.

Cenário:

Como todo campo do SharePoint, podemos manipular estes valores usando o Object Model do SharePoint, sem fazer “workaround’s”. Trabalhando da forma correta.

Por exemplo, estes amigos fazem do jeito errado, mas funciona…

http://www.eggheadcafe.com/software/aspnet/30320968/how-to-set-the-value-to-the-hyperlink-field-programmatically.aspx

ERRADO:

SPListitem[“MeuCampoHyperLink”] = “http://algumlink.com&#8221; + “, ” + “minha descrição”;

Vamos fazer do jeito certo, então!

SOLUÇÃO:

Similar a trabalhar com campos Lookup (https://thiagottss.wordpress.com/2010/08/31/trabalhando-com-campos-lookup-e-lookup-multi-value-no-sharepoint-programaticamente/), usamos o Object Model do SharePoint para adequar os valores do campo HyperLink. Da seguinte forma:

Atribuindo valor:

SPFieldUrlValue url = new SPFieldUrlValue();
                            url.Url = "https://thiagottss.wordpress.com";
                            url.Description = "Blog do Thiago Silva!";

                            SPListitem["CampoHyperLink"] = url;

                            SPListitem.Update();

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Lendo valores do item:

SPFieldUrlValue url = new SPFieldUrlValue(item["CampoHyperLink"].ToString());
            string link = url.Url;
            string description = url.Description;

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

Abraço!

Iniciando um Workflow programaticamente para um item de Lista no SharePoint

December 14, 2010 Leave a comment

Olá! Smile

Overview:

Como muitos sabem, o SharePoint possui a capacidade de automatizar processos usando seus recursos nativos, um deles é o Workflow. Uma ferramenta poderosíssima!

A ideia deste post não é falar sobre Workflows, para isso, consulte este outro post: https://thiagottss.wordpress.com/2010/09/29/workflow-state-machine-no-sharepoint-2010/.

Cenário:

Muitas vezes, desenvolvendo aplicações para SharePoint, utilizamos o Workflow para automatizar alguns processos e/ou ações, coletar informações do usuário, etc. E, em algumas dessas vezes, precisamos iniciar o Workflow programaticamente. Ou seja, em determinada ação da nossa aplicação, é necessário que o Workflow inicie automaticamente.

O SharePoint pode fazer isso para nós se você optar por permitir que o Workflow inicie automaticamente quando um novo item é criado na lista ou para que inicie automaticamente quando algum item sofreu alteração.

Mas, no meu caso, nenhuma dessas ocasiões atendia meu cenário. Preciso iniciar o Workflow via código em determinado momento!

SOLUÇÃO:

Isso é bem simples, vamos ao que interessa!

using (SPWeb web = site.OpenWeb())
                {
                    SPList lista = web.Lists.TryGetList("Nome da Lista");
                   
                    SPListItem itemDaLista = lista.GetItemById(5);

                    foreach (SPWorkflowAssociation wfkAssociation in lista.WorkflowAssociations)
                    {
                        if (wfkAssociation.Name == "Nome do Workflow")
                        {
                            site.WorkflowManager.StartWorkflow(itemDaLista, wfkAssociation, "<root />");
                        }

                        break;
                    }
                }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

A dica aqui, é usar um XML vazio (“<root />”) para o eventData (3º parâmetro). Não tente passar string vazia ou null. Não funciona! 😉

Isso, claro, se você não estiver usando um AssociationForm. Caso contrário, passe a informação do AssociationForm.

É isso aí! =)

Abraço!

Entendendo o Alternate Access Mapping (AAM) do SharePoint 2010 de forma simples

November 17, 2010 Leave a comment

Autor:

Thiago Silva

Publicação:

17/Nov/10

Overview

O Alternate Access Mapping (AAM) direcionam usuários URLs durante sua interação com o SharePoint. AAM permite mapear solicitações Web para o endereço correto de aplicações Web e sites, e permite servir a URL correta de volta para o usuário.

Em outras palavras, podemos fazer com que a URL http://MinhaURLdoSharePoint, seja direcionada para URL verdadeira do meu ambiente, como http://notebook01 (nome da minha máquina).

NOTA: Neste artigo vou mostrar como podemos ver isso na prática, usando um ambiente de desenvolvimento. Por ser um ambiente de desenvolvimento, vou utilizar os arquivo “hosts” para mapear nosso endereço. Em um ambiente real, esse mapeamento deve ser feito em um servidor DNS.

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows 7 Enterprise;

· Microsoft SharePoint 2010 Server Enterprise;

· SQL Server 2008 Enterprise;

1. Mapeando o endereço IP do nosso servidor SharePoint, no arquivo “hosts”.

1.1. Clique em Iniciar, e depois em Executar. Ou, se preferir, use a tecla de atalho “Windows + R”.

1.2. Insira o endereço “%SystemDrive%\Windows\System32\drivers\etc” e clique Ok.

image

1.3. Clique com o botão direito no arquivo “hosts”, e clique em Open.

1.4. Abra o arquivo com o Notepad (Bloco de Notas).

image

1.5. Insira uma linha no fim do documento, similar a esta da imagem. O IP é o da minha própria máquina (127.0.0.1) que contém o SharePoint, você deve adequar para o seu ambiente. E o endereço (MinhaURLdoSharePoint), é o endereço que eu quero acessar o meu SharePoint meu Internet Explorer.

image

1.6. Pronto, salve o arquivo e vamos testar se o endereço está funcionando. Abra o prompt de comando e dê um ping no endereço que acabamos de mapear.

image

Funcionando. Agora, vamos criar o mapeamento no SharePoint.

2. Acessando a Central Administration do SharePoint e criando um AAM.

2.1. Na Central Administration, clique em Application Management.

2.2. Clique em Configure alternate access mappings.

image

2.3. Clique em Add Internal URLs.

image

2.4. Insira o endereço que você mapeou no arquivo “hosts”. No meu caso: http://MinhaURLdoSharePoint. Escolha a zona de autenticação desejada para o mapeando e certifique-se de que está utilizando a Collection correta. Depois, clique Save.

image

image

Pronto, configuramos o AAM para este endereço. Vamos acessar nosso SharePoint, abra o Internet Explorer e digite a sua URL: http://MinhaURLdoSharePoint.

image

Caso encontre dificuldades para acessar seu SharePoint com o novo endereço, veja este post: https://thiagottss.wordpress.com/2010/11/17/sharepoint-pede-autenticao-mas-no-faz-logon-pgina-em-branco-http-401-1-unauthorized-logon-failed/.

Conclusão

O AAM tem outras finalidades, como por exemplo, para ambientes com Network Load Balance (NLB). A ideia deste artigo foi, de forma simples, mostrar como podemos utilizar o AAM para mapear endereços para os usuários finais.

Informações adicionais sobre AAM:

http://blogs.msdn.com/b/sharepoint/archive/2007/03/06/what-every-sharepoint-administrator-needs-to-know-about-alternate-access-mappings-part-1.aspx – What every SharePoint administrator needs to know about Alternate Access Mappings (Part 1 of 3)

http://technet.microsoft.com/en-us/library/cc288609(office.12).aspx – Plan alternate access mappings (Windows SharePoint Services)

Usando Named Sets no Analysis Services para entregar “Ranges” de datas pré-definidos para o usuário final

October 29, 2010 4 comments

Autor:

Thiago Silva

Publicação:

29/Out/10

Overview

Desenvolvendo soluções de BI, usando o SQL Server Analysis Services (SSAS), damos para o usuário final a possibilidade de navegar nos dados usando uma dimensão de tempo. Mas, quando o usuário começa a utilizar, ele sempre quer mais, por exemplo: Como faço para filtrar somente os dados do último mês, ou dos últimos três até a data atual?”.

Por padrão, este filtro não existe. O usuário teria que selecionar os meses que ele gostaria de ver, por exemplo, o mês anterior ao que vigente em que ele estava montando os filtros. Mas, e quando virar o próximo mês? Não será automático, ou seja, ele precisará fazer um novo filtro ou seu filtro inicial irá trazer dois meses anteiores, agora que ele está no próximo mês ao que ele estava antes.

Podemos então ajudar o usuário dando a possibilidade para que ele insira cálculos pré-configurados que farão o que ele precisa, de forma automática. Para isso, usamos Calculated Members e/ou Named Sets.

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows 7 Enterprise

· Microsoft SharePoint 2010 Server Enterprise (PerformancePoint Services);

· SQL Server 2008 Enterprise;

· Business Intelligence Development Studio;

· PerformancePoint Dashboard Designer.

O foco deste artigo não é a criação de um projeto no Analysis Services. Para ajuda neste assunto, consulte: http://msdn.microsoft.com/en-us/library/ms166552.aspx – Designing and Implementing: Tutorials (Analysis Services – Multidimensional Data)

1. Criando os Named Sets.

a. No seu projeto do Analysis Services, clique duas vezes sobre o seu cubo (.cube) no Solution Explorer.

b. Clique na tab Calculations, clique em Script View, para ver o script inteiro como na imagem abaixo.

image

c. Logo abaixo de “CALCULATE;”, insira o seguinte script.

/*

Dimensão Data

*/

CREATE HIDDEN DYNAMIC SET CURRENTCUBE.[TodaySet]

AS filter([Data].[Calendar Date].[Date].Members,

[Data].[Calendar Date].CurrentMember.Properties(“Data As Int”)

= Format(Now(), “yyyyMMdd”)) ;

CREATE HIDDEN DYNAMIC SET CURRENTCUBE.[CalendarTodaySet]

AS exists([Data].[Calendar Date].[Date].Members, [TodaySet]).ITEM(0).ITEM(0) ;

CREATE DYNAMIC SET CURRENTCUBE.[Current Year To Date]

AS [CalendarTodaySet].ITEM(0).ITEM(0).Parent.Parent.FirstChild.FirstChild :

[CalendarTodaySet].ITEM(0).ITEM(0);

CREATE DYNAMIC SET CURRENTCUBE.[Last Month]

AS [CalendarTodaySet].ITEM(0).ITEM(0).Parent.Lag(1).FirstChild :

[CalendarTodaySet].ITEM(0).ITEM(0).Parent.Lag(1).LastChild;

CREATE DYNAMIC SET CURRENTCUBE.[Last Three Month]

AS [CalendarTodaySet].ITEM(0).ITEM(0).Parent.Lag(3).FirstChild :

[CalendarTodaySet].ITEM(0).ITEM(0).Parent.Lag(1).LastChild;

CREATE DYNAMIC SET CURRENTCUBE.[Last Three Month To Date]

AS [CalendarTodaySet].ITEM(0).ITEM(0).Parent.Lag(3).FirstChild :

[CalendarTodaySet].ITEM(0).ITEM(0);

/*

[Data] = Dimensão de Tempo

[Calendar Date] = Hierarquia com os seguintes atributos (Year → Month → Date)

[Date] = Atributo relacionado ao dia 

*/

d. Na Solution Explorer, vá até o DataSourceView que possui a sua tabela de Tempo. Clique duas vezes nela para criarmos um campo calculado que terá a data atual como “int”, no formato yyyymmdd.

e. Clique com o botão direito na sua tabela que contém as datas, e selecione Add New Named Calculation.

image

f. Em Column Name, dê o nome de Data As Int.

g. Em Expression, insira a seguinte expressão para transformar a data em um número inteiro.

i. convert(varchar(8), PK_Date, 112)

PK_Date = coluna que contém a data na tabela de datas.

h. Clique OK, e depois clique com o botão direito na tabela e selecione Explore Data para verificar se a expressão funcionou. Navegue com as barras, se necessário, até encontrar a coluna que acamos de criar.

image

image

i. Na Solution Explorer, clique duas vezes sobre a sua dimensão de Datas.

j. Em Data Source View, na tabela de Datas, localize a coluna que acabamos de criar, clique com o botão direito e selecione New Attribute from Column.

image

NOTA: Repare na hierarquia Calendar Date, é nela que o script é baseado.

k. Pronto. Agora é só fazer Deploy e Processar o cubo. Na dimensão de Data teremos nossos filtros!

image

l. E onde entra o SharePoint nisso tudo? Podemos gerar gráficos dinâmicos usando o PerformancePoint e/ou Excel Services acessando informações do cubo criado no SQL Server com Analysis Services.

m. E estes Named Sets podem ser utilizados no PerformancePoint Dashboard Designer para filtrar os dados!

image

Conclusão

Nesse artigo mostrei como podemos criar filtros/membros calculados para automatizar ações do usuário final. Assim, ele não precisa ficar atualizando o mesmo relatório sempre que alguma variável já conhecia mude, como é o caso de um relatório que traz informações do mês anterior.

Sem estes filtros/membros calculados, o usuário precisaria atualizar o relatório sempre que o mês mudasse, selecionando então, o anterior vigente.

Extraindo informações de listas no SharePoint e carregando em tabelas no SQL Server usando Integration Services

October 28, 2010 13 comments

Autor:

Thiago Silva

Publicação:

28/Out/10

Overview

Constantemente encontramos situações onde precisamos extrair as informações do SharePoint para tratar, analisar e mostrar algo.

Já vi situações que usuários acessam os dados do SharePoint diretamente no Banco de Dados. Esse procedimento não é recomendado, pois a Microsoft não garante suporte ao produto se acessamos os dados diretamente na base de dados do SharePoint. Para isso, existem as APIs e afins.

Recentemente, montei um projeto de BI, usando as informações das listas do SharePoint, para montar indicadores, dashboards e tudo mais. Mas, como fazer isso usando as listas do SharePoint?

Utilizei os recursos do SQL Server, mais precisamente o Integration Services (SSIS), para extrair as informações do SharePoint e jogar em tabelas criadas no SQL Server, em uma instância e um Banco de Dados separado para isso. Assim, também ajudamos para que a performance das outras aplicações do SharePoint não sofram tanto.

Para utilizar o SSIS e extrair as informações do SharePoint, precisaremos de um add-in disponível no CodePlex (http://sqlsrvintegrationsrv.codeplex.com/releases/view/17652). Faça o download, instale e adicione o add-in no Toolbox como sugerido a seguir.

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows 7 Enterprise;

· Microsoft SharePoint 2010 Server Enterprise;

· SQL Server 2008 Enterprise;

· SQL Server 2008 Integration Services;

· SQL Server Business Intelligence Development Studio;

· SharePoint List Source and Destination (http://sqlsrvintegrationsrv.codeplex.com/releases/view/17652)

1. Instalando o SSIS SharePoint List Adapters

a. Faça download do executável no link mencionado acima.

b. Rode o instalador e prossiga com a instalação.

image

2. Adicione o List Source (puxar informação do SharePoint) e o List Destination (inserir informação no SharePoint) ao Toolbox do Business Intelligence Development Studio.

a. Abra o Business Intelligence Development Studio e crie um novo Projeto do Integration Services.

image

b. Clique em DataFlow, depois clique no link no meio da tela para criar um Data Flow Task.

image

c. No menu Tools, selecione Choose Toolbox Items para adicionar os novos itens.

image

d. Na tab SSIS Data Flow Items, selecione SharePoint List Destination e SharePoint List Source marcando os checkbox’s.

image

e. Para organizar melhor, arraste os controles que estão em General para Data Flow sources e Data Flow Destinations respectivamente.

image

3. Criando uma lista customizada no SharePoint para testes com a integração do SSIS.

a. Vá até o site desejado, clique em All Site Contents, e depois em Create para criar uma nova lista. Escolha uma Custom List para facilitar a criação de colunas. Clique Ok, após dar um nome para sua lista.

image

b. Insira alguns itens na lista para que algo seja retornado quando rodarmos o pacote no SSIS.

image

4. De volta ao Business Intelligence Development Studio.

a. Em Data Flow, selecione SharePoint List Source no Toolbox e arraste para a area de Design do Data Flow.

image

image

b. Clique duas vezes para editar as configurações, e apontarmos para a lista desejada.

i. A janela do Advanced Editor for SharePoint List Source deve aparecer para editarmos as configurações.

ii. Em Custom Properties, localize SiteUrl e SiteListName. Insira as informações de acordo com seu ambiente. No meu caso, http://notebook01/ e Lista Teste SSIS respectivamente.

image

NOTA: Perceba que podemos customizar muitas outras opções, como por exemplo, inserir uma Query CAML para trazer apenas itens baseados em certo filtro e/ou ordenado por alguma coluna específica.

iii. Nas tabs Column Mappings e Input and Output Properties, você pode customizar quais colunas deseja trazer da lista e também criar próprias colunas e mapeá-las de acordo com a necessidade.

5. Criando uma tabela no SQL Server para receber os dados da lista.

a. Clique no menu View, depois em Server Explorer.

image

b. Clique com o botão direito em Data Connections, em seguida em Add Connection.

image

c. Insira o nome do seu servidor de banco de dados (caso ele possua instâncias diferentes, como no meu caso, insira também o nome da instância). E mais abaixo, selecione o nome do seu banco de dados onde iremos criar a tabela que irá receber as informações da lista.

image

d. Clique em Test Connection para testar sua conexão com o Banco de Dados, e depois clique em Ok.

e. Expanda a conexão que você acabou de criar. Expanda Tables, clique com o botão direito e selecione Add New Table.

image

f. Crie duas colunas: uma “ID”, do tipo int, para armazenar o ID do item do SharePoint, e outra coluna “Nome”, do tipo nvarchar(255), para armazenar o campo Title do item do SharePoint.

g. Em Propierties, da tabela, coloque um nome para sua tabela. No meu caso, coloquei algo similar ao nome da Lista no SharePoint. Então, ficou assim: “Table_Teste_SSIS”.

image

6. Inserindo as informações extraídas da Lista do SharePoint para a tabela no SQL Server.

a. No Toolbox, arraste o item OLE DB Destination para o Design do Data Flow task.

image

b. Clique no SharePoint List Source, e arraste o conector (output) para o OLE DB Destination (input).

image

c. Clique duas vezes sobre OLE DB Destination para configurar os mapeamentos.

i. O OLE DB Destination Editor deve aparecer. Clique em New no OLE DB connection manager para criar uma nova conexão, que será utilizada por este controle.

ii. Em Configure OLE DB Connection Manager, clique em New.

iii. Configure a conexão com o seu Banco de Dados, como feito anteriormente.

image

iv. Clique Ok, e Ok novamente para voltar ao OLE Destination Editor. De volta ao Editor, escolha a tabela que acabamos de criar.

image

v. Depois clique em Mappings, para mapear as colunas que queremos.

vi. Veja que a coluna ID já teve seu mapeamento feito automaticamente por que elas tem o mesmo nome na Lista do SharePoint e na Tabela no SQL. Mas a coluna Title e Nome, não foram mapeadas. Por tanto, vamos fazê-lo agora.

vii. Clique no Input Column abaixo de ID, e seleciona Title. Depois, clique em OK.

image

d. Agora, clique duas vezes sobre o conector (linha verde) para adicionar um “viewer” para visualizar o que está vindo do SharePoint.

i. O Data Flow Path Editor irá aparecer. Clique Data Viewers, clique em Add. Depois clique em Ok, e Ok novamente pare fechar todos os Editor’s.

image

e. Pronto! Agora vamos pressionar F5 para iniciar a extração dos dados.

f. O Data Viewer vai aparecer para visualizarmos as informações que vieram da lista do SharePoint. Pressione o “play” para continuar e jogar as informações na tabela do SQL.

image

g. Sucesso!

image

h. No Server Explorer clique com o botão direito na tabela, e selecione Show Table Data.

image

i. As informações da nossa lista estão agora na tabela no SQL Server!

image

Conclusão

Nesse artigo mostrei como podemos usar funcionalidades do SLQ Server para extrair dados do SharePoint de forma estruturada e aproveitando-se das API’s do SharePoint para isso, já que não é recomendado acessar diretamente as informações do SharePoint no seu banco de dados.

Benefícios na utilização do SharePoint List Source and Destination:

· Somente os campos que você quer são retornados do SharePoint.

· Listas grandes não são transferidas de uma única vez. Elas são paginadas em batches, com a configuração de tamanho dos batches. Por padrão, são 1000 itens por vez.

· Informação dos tipos de coluna do SharePoint é usada para o mapeamento nos tipos de dados dentro do Integration Services.

· Queries CAML podem ser adicionadas para realizar filtros nas linhas que serão retornadas da lista.

Acessando e processando dados externos de planilhas via Excel Services Web Services

October 17, 2010 18 comments

Autor:

Thiago Silva

Publicação:

16/Out/10

Overview

Uma das funcionalidades do SharePoint 2010, quando o assunto é BI, é o Excel Services. Juntamente com o PerformancePoint Services e as WebParts de gráficos, eles formam uma grande ferramenta para acompanhamento de resultados e tomadas de decisão.

Essas ferramentas tem um potencial ainda maior quando os conectamos com um Analysis Services para atualizar as informações automaticamente baseando no processamento de cubos OLAP.

Neste artigo, utilizei uma planilha Excel publicada no Excel Services do SharePoint 2010. Esta planilha possui uma conexão de dados com um cubo no Analysis Services para atualizar valores de uma pivot table, e por sua vez, atualizar informações em um gráfico, usando a WebPart de gráfico que está conecta a planilha no Excel Services.

O Excel Services pode atualizar a conexão de dados quando o usuário abre a planilha, ou de tempos em tempos, mas só enquanto o usuário interage com a planilha. Ou seja, é necessário que o usuário matenha uma sessão aberta para que a atualização dos dados seja realizada.

No meu caso, eu preciso atualizar a planilha em runtime, sem interação do usuário, por que o usuário vai ver apenas a WebPart de gráficos (fiz esta conexão da WebPart de gráficos com o Excel Services por que a WebPart não acessa dados do Analysis Services diretamente).

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows 7 Enterprise;

· Microsoft SharePoint Server 2010 Enterprise;

· SQL Server 2008 Enterprise;

Neste exemplo, já tenho as aplicações funcionando. O Excel Services já está rodando a planilha que possui conexão com o cubo no Analysis Services do SQL Server e a WebPart de gráfico, por sua vez, lê as informações da planilha hospedada no Excel Services. Vejam as imagens do ambiente montado:

WebPart de Gráfico acessando planilha no Excel Services:

image

Planilha no Excel Services acessando Analysis Services:

image

Se clicarmos em “Data” e depois em “Refresh All Connections”, a conexão com os dados irá atualizar e trazer os dados atuais da fonte de dados.

image

Mas, no meu caso, preciso que esta atualização seja feita com o arquivo fechado, sem intereção do usuário. Por este, criei um TimeJob (serviço de agendamento de tarefas do SharePoint) para realizar esta operação de tempos em tempos.

Neste artigo vou usar uma WebPart, para simplificar o deploy e “start” da operação usando um botão.

Crie um projeto de Visual Web Part no Visual Studio 2010 para começarmos. Caso preciso de informações de como fazer, acesse: http://www.canalsharepoint.com.br/tutoriais/Tutoriais/SharePoint%202010%20-%20Visual%20WebParts.aspx.

1. Adicionando Excel Services Web Services

1.1. Na Solution Explorer, clique com o botão direito no projeto e selecione Add Service Reference;

image

1.2. Clique em Advanced para abrir a janela de opções avançadas, e depois clique em Add Web Reference;

image

image

1.3. Insira a URL do Excel Services Web Services do seu site, no meu caso: http://notebook01/sites/bi/_vti_bin/excelservice.asmx. Dê o nome de “ExcelServices” e depois, clique em Add Reference.

image

1.4. Adicione o seguinte código na sua WebPart:

Code Snippet
  1. using System;
  2. using System.Web.UI;
  3. using System.Web.UI.WebControls;
  4. using System.Web.UI.WebControls.WebParts;
  5.  
  6. using SharePointWebParts.Demo.ExcelServices;
  7. using Microsoft.SharePoint;
  8.  
  9. namespace SharePointWebParts.Demo.VisualWebPartTeste
  10. {
  11.     public partial class VisualWebPartTesteUserControl : UserControl
  12.     {
  13.         protected void Page_Load(object sender, EventArgs e)
  14.         {
  15.             LiteralControl lc = new LiteralControl();
  16.             lc.Text = “<h3>Clique aqui para atualizar a planilha no Excel Services!</h3>”;
  17.             this.Controls.Add(lc);
  18.  
  19.             Button btnAtualiza = new Button();
  20.             btnAtualiza.Text = “Atualizar Agora!”;
  21.             btnAtualiza.Click += new EventHandler(btnAtualiza_Click);
  22.             this.Controls.Add(btnAtualiza);
  23.         }
  24.  
  25.         void btnAtualiza_Click(object sender, EventArgs e)
  26.         {
  27.             ExcelService es = new ExcelService();
  28.  
  29.             string workbookpath = http://notebook01/sites/bi/documents/Chart.xlsx&#8221;;
  30.             Status[] outStatus;
  31.  
  32.             es.Credentials = System.Net.CredentialCache.DefaultCredentials;
  33.  
  34.             try
  35.             {
  36.                 string sessionid = es.OpenWorkbook(workbookpath, “en-US”, “en-US”, out outStatus);
  37.  
  38.                 es.Refresh(sessionid, “notebook01_sqlexpress SSAS”);
  39.  
  40.                 byte[] contents = es.GetWorkbook(sessionid, WorkbookType.FullWorkbook, out outStatus);
  41.                 
  42.                 using (SPSite site = new SPSite(SPContext.Current.Web.Url))
  43.                 {
  44.                     using (SPWeb web = site.OpenWeb())
  45.                     {
  46.                         web.AllowUnsafeUpdates = true;
  47.  
  48.                         web.Files.Add(workbookpath, contents, true);
  49.  
  50.                         web.AllowUnsafeUpdates = false;
  51.                     }
  52.                 }
  53.  
  54.                 es.CloseWorkbook(sessionid);
  55.             }
  56.             catch (Exception ex)
  57.             {
  58.                 Label lblmensagem = new Label();
  59.                 lblmensagem.Text = ex.ToString();
  60.                 this.Controls.Add(lblmensagem);
  61.             }
  62.         }
  63.     }
  64. }

 

1.5. Clique em Build e depois em Deploy Solution;

image

1.6. Adicione sua WebPart na página desejada e clique no botão “Atualizar Agora!” para fazer com nosso código acesse o Excel Services via Web Services, abra a planilha em runtime, processe os dados das conexões externas e salve a planilha atualizada.

image

1.7. Se houveram mudanças na fonte de dados, a planilha irá atualizar e, consequentemente, a WebPart de Gráficos também será atualizada.

Veja nas imagens que, no meu caso, as informações mudaram. Assim, atualizando a planilha no Excel Services e, consequentemente a WebPart de Gráficos.

Planilha no Excel Services Atualizada:

image

WebPart de Gráficos após clicar no botão da WebPart para atualizar as informações:

image

Conclusão

Neste artigo mostrei como atualizar conexões de dados externas em planilhas rodando no Excel Services em runtime usando Excel Services Web Services.

Informações adicionais:

https://thiagottss.wordpress.com/2010/10/17/acessando-e-processando-dados-externos-de-planilhas-via-excel-services-web-services-usando-uma-webapplication-e-sharepoint-2010-client-object-model/ – Acessando e processando dados externos de planilhas via Excel Services Web Services usando uma WebApplication e SharePoint 2010 Client Object Model