Provisioning ‘PWA’: Failed to provision databases. An exception occurred: Published database schema version 12.2.403.0 newer than project server schema version 12.2.200.0
Olá!
Overview:
Depois de resolver o problema mencionado no post anterior (https://thiagottss.wordpress.com/2011/07/08/cannot-insert-duplicate-key-row-in-object-dbo-objects-with-unique-index-ix_objects_classid_parentid_name/), chegamos ao erro de fato que impedia nosso progresso para instanciar um novo ambiente de PWA.
Cenário:
Para montar o ambiente de desenvolvimento e homologação para migração das informações do Project Server, nós restauramos um backup das bases de dados do Project Server de produção no nosso novo ambiente.
Eis que tivemos o erro mencionado abaixo.
ERRO:
Ao procurar pelos erros no ULS do SharePoint (C:\Program files\Commom Files\Microsoft shared\Web Server Extensions\14\LOGS) encontramos o erro:
Provisioning ‘PWA’: Failed to provision databases. An exception occurred: Published database schema version 12.2.403.0 newer than project server schema version 12.2.200.0.
Bom, esse erro já é mais conhecido no mundo SharePoint, mas dessa vez temos que atualizar o schema version do database do Project Server.
Se fosse na base de dados de conteúdo do SharePoint, isso seria resolvido com algum Cumulative Updade do SharePoint.
SOLUÇÃO:
Com muita pesquisa, encontrei um site muito interessante com os hotfixes do Project Server: http://projectserverhotfixes.com/.
O hotfix que procurávamos para atualizar o schema version do DataBase é o KB2544400: http://support.microsoft.com/kb/2544400/en-us?sd=rss&spid=11388.
Aplique o hotfix e execute o SharePoint Configuration Wizard.
Pronto, agora é só provisionar a instância do Project novamente.
Abraço!
Cannot insert duplicate key row in object ‘dbo.Objects’ with unique index ‘IX_Objects_ClassId_ParentId_Name’
Olá!
Overview:
O mundo do SharePoint ganha horizontes com proporções gigantescas já que a Microsoft adota fortemente a plataforma e indica que este é o produto que encabeçará a maioria de todos os seus outros produtos. Parece loucura, não é?
Mas perceba que hoje já temos diversos outros produtos que utilizam o SharePoint como interface para colaboração enquanto o produto em si roda no background. Alguns exemplos: Project Server, Dynamics CRM, FAST, etc.
Cenário:
Em mais um projeto da saga “SAP Migration” precisamos colher informações do Project Server e SharePoint para gerar arquivos para o SAP.
Ao iniciar o processo de migração da Farm de Project Server para um ambiente de homologação para realização dos testes das ferramentas de migração, nos deparamos com um erro ao provisionar o site de PWA no Shared Services Provider Adminsitration do SharePoint.
ERRO:
Ao procurar pelos erros no ULS do SharePoint (C:\Program files\Commom Files\Microsoft shared\Web Server Extensions\14\LOGS) encontramos o erro:
Cannot insert duplicate key row in object ‘dbo.Objects’ with unique index ‘IX_Objects_ClassId_ParentId_Name’.
E agora?
Com um pouco (mentira, com MUITA) pesquisa descobri esse erro era causado por o processo tentar fazer duas (ou mais) vezes a mesma operação por que ao gerar erro, o processo de provisionamento da instância PWA não removia as configurações que ele tentou fazer.
Uma dessas configurações, era um TimerJob criado para sincronizar as informações e gravar no bando do Project, com o nome similar a “Project Server Synchronizing job for ‘SharedServices1’” ou no idioma que você tiver disponibilizado na farm. Por exemplo, no meu, o nome estava em PT-BR: “Trabalho de Sincronização do Project Server para ‘SharedServices1’”.
Quando o provisionamento ocorre com sucesso, o processo exclui esse TimerJob. Ou seja, se ele estiver lá nos Job Defitions, vai dar o erro mencionado neste post.
SOLUÇÃO:
Para resolver este problema precisamos remover este TimerJob ANTES de tentar provisionar a instância de PWA novamente. Para isso, faça o seguinte:
1. Vá até a Central Administration do SharePoint > Operations > TimerJob Defitions
2. Localize o TimerJob com o nome mencionado acima: Project Server Synchronizing job for ‘SharedServices1’. O nome muda. De acordo com o idioma o nome é traduzido.
3. Clique com o botão direito em cima do link do Job, copie e cole em um bloco de notas. Com isso vamos identificar o Job que precisamos excluir.
4. Pegue apenas o valor de JobId que contém no link (ex: http://<servername>:<Central Admin Port>/_admin/JobEdit.aspx?JobId=7CC18CF5%2D5C89%2D 47E3%2DA098%2D 99401FD3E689).
5. Troque o valor %2D por – chegando a algo similar a um GUID (e é um GUID): 7CC18CF5-5C89-47E3-A098-99401FD3E689.
a. IMPORTANTE: Cada Job tem ID próprio. Você deve localizar o ID do Job do seu ambiente.
6. Repita a operação para cada Job que existir com esse nome. Devemos remover todos os Jobs de Sincronização do Job.
7. Agora que temos os GUIDs vamos deleta-los usando o STSADM com o comando: stsadm –o deleteconfigurationobject –id 7CC18CF5-5C89-47E3-A098-99401FD3E689.
a. Repita a operação para cada Job com seu respectivo GUID.
Pronto, agora é só provisionar a instância do Project novamente.
Abraço!