Rodrigo Romano – MVP SharePoint Server

Registros de um Especialista SharePoint :)

Archive for the ‘Tips’ Category

Failed to initiate the upgrade sequence–SPUpgradeException–Erro ao atualizar do Microsoft SharePoint Foundation para o Microsoft SharePoint Server 2010 no Windows 7

leave a comment »


Olá SharePointers,

Hoje passei por um erro ao tentar atualizar a versão do SharePoint da máquina. Estava instalado o SharePoint Foundation e foi instalado o SharePoint Server 2010.

O erro que logava no Event Viewer era esse:

Failed to initiate the upgrade sequence.

An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information: Exception of type Microsoft.SharePoint.Upgrade.SPUpgrade was thrown.

image

Pesquisando um pouco, achei a solução:

Abra o Regedit, vá em HKLM\Software\Microsoft\Shared Tools\Web Server Extensions\14.0\WSS e altere a chave SetupType de SKU2SKU_UPGRADE para CLEAN_INSTALL.

image 

Rode o Configuration Wizard novamente e aparecerá o erro abaixo:

An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information: Failed to call GetTypes on assembly Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Could not load file or assembly ‘System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.

Microsoft.SharePoint.Upgrade.SPUpgradeException: Failed to call GetTypes on assembly Microsoft.Office.Server.Search, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. Could not load file or assembly ‘System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.

at Microsoft.SharePoint.Upgrade.SPDelegateManager.RegisterAssembly(Dictionary`2 dictInitialType, Assembly asm, UInt32 nOrder)

at Microsoft.SharePoint.Upgrade.SPDelegateManager.get_InitialTypeDictionary()

at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetDelegateTypes(Type tpObject)

at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetDelegates(Object o)

at Microsoft.SharePoint.Upgrade.SPDelegateManager.GetUpgraders(Object o)

at Microsoft.SharePoint.Upgrade.SPUpgradeSession.NeedsUpgradeFalse(Object o)

at Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.set_NeedsUpgrade(Boolean value)

at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()

at Microsoft.Office.InfoPath.Server.Administration.FormsService.Update()

at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServiceInConfigDB(Boolean provisionTheServiceToo, String serviceRegistryKeyName)

at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.InstallServices(Boolean provisionTheServicesToo)

at Microsoft.SharePoint.PostSetupConfiguration.ServicesTask.Run()

at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

image

 

Isso significa que o MS Charts não está instalado em sua máquina e é necessário. Para instalá-lo, baixe aqui: http://www.microsoft.com/downloads/en/details.aspx?familyid=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en.

Depois de instalado, rode o Configuration Wizard novamente e Voilá!

 

Referência: http://blogs.msdn.com/b/sasohail/archive/2010/09/28/failed-to-initiate-the-upgrade-sequence-error-while-upgrading-from-microsoft-sharepoint-foundation-2010-to-microsoft-sharepoint-server-2010-in-windows-7.aspx

 

Fica a Dica! Alegre

Written by Rodrigo Romano

January 11, 2013 at 10:01 am

Botão da Ribbon chamar um código Server-Side–SharePoint 2010

with 4 comments


Olá Pessoal,

Hoje vou dar uma dica que sempre acabo precisando: colocar um botão na Ribbon que chama um código Server-Side.

Então, vamos lá:

1- Clique no seu projeto com o botão direito e vá até Adicionar, Novo Item…

image

 

2 – Escolha Empty Element  e dê um nome adequado.

image

3 – Seguindo o modelo do passo 1, adicione uma Classe que conterá seu código Server-Side:

 

image

 

image

4 – Adicione referência ao assembly System.Web:

image

5- Adicione o código abaixo na classe criada:

 

protected override void OnLoad(EventArgs e)
{
    var postback = this.Context.Request["__EVENTTARGET"];
    var arguments = this.Context.Request["__EVENTARGUMENT"];

    if (postback != null && postback.Equals("MinhaAção"))
    {
        string[] ids = arguments.Split(new char[] { ',' }, 
           StringSplitOptions.RemoveEmptyEntries);
        foreach (string id in ids)
        {
        }
    }            
}

6 – No Elements.XML, adicione o código abaixo:

image

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

  <CustomAction
    Id="RibbonDemo"
    RegistrationType="List"
    RegistrationId="10000"
    Location="CommandUI.Ribbon.ListView">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
         Location="Ribbon.ListItem.Manage.Controls._children">
          <Button
           Id="Ribbon.ListItem.Manage.Controls.RibbonDemo"
           Alt="Minha Ação"
           Sequence="999"
           Image16by16="/_layouts/images/placeholder32x32.png"
           Image32by32="/_layouts/images/placeholder32x32.png"
           Command="RibbonDemo"
           LabelText="Minha Ação"
           TemplateAlias="o1"
           ToolTipTitle="Minha Ação"
           ToolTipDescription="Minha Ação"/>
        </CommandUIDefinition>
      </CommandUIDefinitions>
      <CommandUIHandlers>
        <CommandUIHandler
         Command="RibbonDemo"
         CommandAction="javascript:var context = SP.ClientContext.get_current();
              var selectedItems = SP.ListOperation.Selection.getSelectedItems(context);
               var selectedItemsId = '';
                        for (index in selectedItems) {
                            selectedItemsId = selectedItemsId + ',' + selectedItems[index].id;
                        }
              __doPostBack('MinhaAção', selectedItemsId);" />
      </CommandUIHandlers>
    </CommandUIExtension>
  </CustomAction>

  <Control Id="AdditionalPageHead"
           Sequence="90"
           ControlAssembly="$SharePoint.Project.AssemblyFullName$"
           ControlClass="" />
  
</Elements>

O código acima faz 2 coisas:

1 – Coloca o botão na Ribbon

2 – Adiciona o nosso controle ServerSideAction no Site.

OBS: A única coisa que precisamos ficar atento é com a propriedade ControlClass, que precisamos colocar o Namespace + Nome da Classe do Controle que criamos anteriormente.

Nesse caso, ficará assim: ControlClass="ExemploRibbon.ServerSideAction".

 

Agora, precisamos falar para o SharePoint que esse controle é seguro:

Clique no Empty Element do Botão, e na guia de propriedades, clique no botão “…” referente ao Safe Control Entries.

image

Clique em adicionar. A tela deverá ficar assim:

image

Após isso, tudo deverá estar funcionando corretamente. Alegre Só testar e colocar o código desejado na classe criada.

 

image

 

Se quiserem baixar a solução funcionando, podem clicar aqui: Download SharePoint Ribbon Demo.

 

É isso aí Alegre!!! Espero que essa dica ajude a todos os desenvolvedores que sofriam para conseguir fazer isso funcionar.

Written by Rodrigo Romano

November 12, 2012 at 1:30 pm

An exception of type System.ServiceProcess.TimeoutException was thrown

leave a comment »


Instalando o Cumulative Update de Abril de 2012 para o SharePoint Server 2010, encontrei o seguinte problema na hora de rodar o Configuration Wizard:

 

Failed to initialize SharePoint Products and Technologies upgrade.
An exception of type System.ServiceProcess.TimeoutException was thrown.  Additional exception information: Time out has expired and the operation has not been completed.
System.ServiceProcess.TimeoutException: Time out has expired and the operation has not been completed.
   at System.ServiceProcess.ServiceController.WaitForStatus(ServiceControllerStatus desiredStatus, TimeSpan timeout)
   at Microsoft.SharePoint.PostSetupConfiguration.ServiceHelper.Stop(String serviceName)
   at Microsoft.SharePoint.PostSetupConfiguration.InitializeTask.StopServicesListedInRegistry(RegistryHelper registry)
   at Microsoft.SharePoint.PostSetupConfiguration.InitializeTask.StopAllServices()
   at Microsoft.SharePoint.PostSetupConfiguration.InitializeTask.PrepareForUpgrade()
   at Microsoft.SharePoint.PostSetupConfiguration.InitializeTask.Run()
   at Microsoft.SharePoint.PostSetupConfiguration.TaskThread.ExecuteTask()

 

Estava achando que era problema do Update, mas.. Não era.

No meu caso, o serviço do Sandboxed User Code estava "Finalizando" mas nunca terminava. Matei o processo utilizando o Task Manager e o Configuration Wizard passou a funcionar normalmente.

image

Pelo que vi, pode ser aleatório. Encontrei uma outra pessoa com o mesmo problema, mas era o serviço de Search (http://www.entwicklungsgedanken.de/2008/07/18/systemserviceprocesstimeoutexception-when-running-psconfig/).

 

Alegre

Written by Rodrigo Romano

July 17, 2012 at 10:29 am

Posted in SharePoint, Tips

Tagged with

One or more files in the restored site collection will exceed the maximum supported path length. Please select a shorter destination site address and try again.

with 2 comments


Olá,

Fazendo um restore de um Site Collection, passei por uma situação que não esperava encontrar:

image

Isso significa que o Novo Path Total (Path + Nome do Arquivo) ultrapassava 260 caracteres que é o limite do SharePoint para diretórios. Ou seja, se você estava tentando restaurar o backup em uma url: /departamentos/teste departamento 1, somando o nome das pastas mais o nome do arquivo, acabou ultrapassando 260.

O pior, é que isso ocorre somente após fazer todo o restore e o SharePoint chamar a procedure proc_RenameSite. Ou seja, se der erro, todo o tempo que você ficou esperando é perdido!!!

Para resolver o problema, você tem 2 soluções:

1 – Alterar o nome original do arquivo

2 – Tentar fazer o restore em uma URL menor.

 

Para saber quais arquivos estão com dando problema, vocês podem rodar o script abaixo no SQL:

SELECT
    LEN(DirName + N'/' + LeafName) AS Total,  
    DirName, 
    LeafName 
FROM
    Docs WITH (NOLOCK) 
ORDER BY Total DESC

#Fica a Dica Alegre

Written by Rodrigo Romano

June 30, 2012 at 5:41 pm

Feature ‘d8d8df90-7b1f-49c1-b170-6f46a94f8c3c’ for list template ‘1104’ is not installed in this farm. The operation could not be completed

leave a comment »


Olá,

O erro acima acontece porque o servidor não tem o template ProjectTrackingWorkspace instalado.

Para baixar o modelo, clique em: http://technet.microsoft.com/en-us/windowsserver/sharepoint/bb407286.aspx

OBS: Se você não tiver o Application Template Core instalado, instale-o primeiro: http://www.microsoft.com/en-us/download/details.aspx?id=5958

 

Alegre

Written by Rodrigo Romano

June 30, 2012 at 4:49 pm

Posted in Dicas, SharePoint 2010, Tips

Tagged with ,

Erro: Windows Server Features or Role Services required by this product are not enabled ao instalar SharePoint 2010 no Windows Server 2012 RC

with one comment


Olá SharePointers,

Estava tentando instalar o SharePoint 2010 no Windows Server 2012 RC e aparecia o erro abaixo:

WinSrv8AndSP-WithoutEmulate

Para resolver, baixe esse arquivo Hand.ServerManagerCmdEmul – Binaries, e coloque-o na pasta c:\windows\system32.

Após esse passo, a instalação vai funcionar perfeitamente!

Referência:

http://craiglussier.com/2012/03/01/install-sharepoint-2010-on-windows-server-8-beta/

http://gallery.technet.microsoft.com/sharepoint/SharePoint-2010-and-dee17600

http://blog.hand-net.com/sharepoint/2010-06-10-error-lors-de-linstallation-des-office-web-apps-2010-sur-windows-7.htm

Written by Rodrigo Romano

June 30, 2012 at 1:11 pm

Quick Tip: Como saber o tamanho ocupado pelos sites (Site Collections) SharePoint?

leave a comment »


Olá Alegre,

Para saber o tamanho ocupado por cada Site Collection do SharePoint, você pode usar cmdlet PowerShell abaixo:

Get-SPSite | select url, @{label="Tamanho";Expression={$_.usage.storage/1MB}} | Sort-Object -Descending -Property "Tamanho" | Format-Table –AutoSize

 

Boa sorte Smiley piscando

Written by Rodrigo Romano

June 30, 2012 at 3:00 am

The Given Key Was Not Present in the Dictionary – SharePoint 2010

leave a comment »


Olá SharePointers,

Instalando uma farm SharePoint 2010, passei pelo seguinte cenário: Na etapa 3, do configuration Wizard dava erro e aparecia o texto abaixo:

An exception of type System.Collections.Generic.KeyNotFoundException was thrown. Aditional exception information: the given key was not present in the dictionary.

Para resolver isso, siga os passos:

  1. Abra a console Usuários e Computadores do Active Directory
  2. Procure a conta de serviço que você está tentando adicionar como conta de Administrador da Farm.
  3. Selectione Features Avançadas no Menu Visualizar.
  4. Abra as propriedades da conta desejada e clique na aba Segurança.
  5. Clique em Authenticated Users e marque a opção READ.

Rode o configuration wizard novamente!

 

Referência: http://support.microsoft.com/kb/2463865

Written by Rodrigo Romano

June 29, 2012 at 6:30 pm

Posted in SharePoint, SharePoint 2010, Tips

Tagged with

Configurar Remote Blob Storage (RBS) no SharePoint 2010

leave a comment »


Olá SharePointers,

Muitos possuem dúvidas de como instalar e configurar o RBS (Remote Blob Storage) no SharePoint Server 2010 e SQL Server.

Vamos as tips:

Não é possível habilitar o FILESTREAM em uma versão 32 bits do SQL rodando em um Sistema Operacional 64 bits.

Para habilitar, na instalação do SQL Server, basta ativar como na imagem abaixo:

SQL Hom 15

Caso você já tenha o SQL Instalado, abra o SQL Configuration Manager, Clique em SQL Server Services, clique na instância que deseja configurar com o botão direito do mouse e escoolha Propriedades.

image

Na aba Filestream, configure como na imagem abaixo e clique em OK.

image

Abra o programa SQL Management Studio, e rode o seguinte código TRANSACT-SQL :

EXEC sp_configure filestream_access_level, 2
RECONFIGURE

Clique em Executar e depois Reinicie o serviço do SQL Server.

 

PRONTO! O SQL Server está pronto para receber o Remote Blob. Para saber mais sobre boas práticas, veja esse artigo: http://msdn.microsoft.com/en-us/library/cc645923.aspx.

 

A segunda etapa do arquivo é habilitar um armazenamento de remote blob para cada Content Database do SharePoint.

Para isso, abra o SQL Management Studio, escolha o Content Database necessário e rode as seguintes Queries:

 

ATENÇÃO!!! Lembre-se de alterar o nome do Banco WSS_Content para o seu banco de conteúdos e alterar a pasta c:\blobstore para a pasta de destino onde os arquivos serão armazenados.

 

use [WSS_Content]
if not exists 
(select * from sys.symmetric_keys 
where name = N'##MS_DatabaseMasterKey##')
create master key encryption by password = N'Admin Key Password !2#4'
use [WSS_Content]
if not exists 
(select groupname from sysfilegroups 
where groupname=N'RBSFilestreamProvider')
alter database [WSS_Content]
add filegroup RBSFilestreamProvider contains filestream
use [WSS_Content] 
alter database [WSS_Content]
 add file (name = RBSFilestreamFile, filename = 
'c:\Blobstore') 
to filegroup RBSFilestreamProvider

 

Agora, em cada Servidor Web, faça o download do arquivo RBS_x64.msi disponível no link http://go.microsoft.com/fwlink/?LinkID=188395&clcid=0x409.

No primeiro servidor Web, faça o procedimento abaixo:

Rode o comando abaixo no prompt de comando. Lembre-se de alterar o nome do banco de dados “WSS_Content” e da Instância do Banco de dados “DBInstanceName”.

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi TRUSTSERVERCERTIFICATE=true FILEGROUP=PRIMARY DBNAME=”WSS_Content” DBINSTANCE=”DBInstanceName” FILESTREAMFILEGROUP=RBSFilestreamProvider FILESTREAMSTORENAME=FilestreamProvider_1

Para os próximos, faça:

Faça o download do arquivo RBS.msi disponível em http://go.microsoft.com/fwlink/?LinkID=188395&clcid=0x409.

Rode o comando abaixo. Lembre-se de alterar o nome do banco de dados “WSS_Content” e da Instância do Banco de dados “DBInstanceName”.

msiexec /qn /lvx* rbs_install_log.txt /i RBS.msi DBNAME=”WSS_Content” DBINSTANCE=”DBInstanceName” ADDLOCAL=Client,Docs,Maintainer,ServerScript,FilestreamClient,FilestreamServer

Repita o procedimento em todos os servidores restantes.

 

Último passo (e não menos importante) – Habilitar o RBS para cada Banco de dados de Conteúdo

Abra o SharePoint 2010 Management Shell.

Digite o comando abaixo:

$cdb = Get-SPContentDatabase <ContentDatabaseName>
$rbss = $cdb.RemoteBlobStorageSettings
$rbss.Installed()
$rbss.Enable()
$rbss.SetActiveProviderName($rbss.GetProviderNames()[0])
$rbss

Troque o ContentDatabaseName pelo nome do banco de dados de conteúdo que deseja alterar.

 

Algumas referências:

Install e Configure RBS: http://technet.microsoft.com/en-us/library/ee748631.aspx

Overview of RBS: http://technet.microsoft.com/en-us/library/ee748649.aspx

Plan for RBS: http://technet.microsoft.com/en-us/library/ff628583.aspx

Enable and Configure FILESTREAM: http://msdn.microsoft.com/en-us/library/cc645923.aspx

 

 

Isso aí SharePointers! Chegamos ao fim de mais um tutorial. Espero ter ajudado Smiley piscando

Written by Rodrigo Romano

June 29, 2012 at 12:07 pm