Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo fornece uma resolução para o problema de que você não pode restaurar um banco de dados do Microsoft Dynamics CRM 2011 com o Microsoft SQL Server Enterprise Edition para um servidor com o Microsoft SQL Server Standard Edition.
Aplica-se a: Microsoft Dynamics CRM 2011
Número original do KB: 2567984
Sintomas
Ao tentar restaurar um banco de dados do Microsoft SQL Server Enterprise para outro servidor que executa o Microsoft SQL Server Standard, você recebe o seguinte erro:
Falha na restauração do servidor 'SQLServerName'.
Informações adicionais:
Ocorreu uma exceção ao executar uma instrução ou um lote Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
O banco de dados 'Org_MSCRM' não pode ser iniciado nesta edição do SQL Server porque contém uma função de partição 'AuditPFN'. Somente a edição Enterprise do SQL Server oferece suporte ao particionamento. O banco de dados 'Org_MSCRM' não pode ser iniciado porque algumas das funcionalidades do banco de dados não estão disponíveis na edição atual do SQL Server. (Microsoft SQL Server, Erro: 905)
Motivo
Quando o Microsoft Dynamics CRM 2011 é instalado usando uma edição do Microsoft SQL Server Enterprise, uma partição é criada para a funcionalidade de auditoria do Microsoft Dynamics CRM 2011. A tabela AuditBase usa particionamento que só está disponível para o Microsoft SQL Server Enterprise.
Resolução
Use as etapas e o script a seguir para remover o particionamento. O script a seguir recria todos os índices na partição primária e, em seguida, descarta a partição.
Certifique-se de ter um backup do banco de dados 'Org_MSCRM' antes de executar as etapas a seguir.
Restaure o
'Org_MSCRM'banco de dados para uma edição do Microsoft SQL Server Enterprise. É recomendável fazer backup e restaurar o banco de dados em vez de executar o script no banco de dados de produção.Execute o script a seguir no banco de dados restaurado.
IF Object_id('tempdb..#indexesScript', 'U') IS NOT NULL DROP TABLE #indexesScript IF EXISTS (SELECT NAME FROM sys.partition_schemes WHERE NAME = 'AuditPScheme') BEGIN SELECT CASE WHEN ind.type != 1 THEN 'DROP INDEX [dbo].[AuditBase].' + Quotename(ind.NAME) + ' ' ELSE ' ' END + 'CREATE ' + CASE is_unique WHEN 1 THEN 'UNIQUE ' ELSE '' END + ind.type_desc + ' INDEX ' + Quotename(ind.NAME COLLATE sql_latin1_general_cp1_ci_as ) + ' ON [dbo].' + Quotename(Object_name(object_id)) + ' (' + Reverse(Substring(Reverse(( SELECT NAME + CASE WHEN sc.is_descending_key = 1 THEN ' DESC' ELSE ' ASC' END + ',' FROM sys.index_columns sc JOIN sys.columns c ON sc.object_id = c.object_id AND sc.column_id = c.column_id WHERE Object_name( sc.object_id) = 'AuditBase' AND sc.object_id = ind.object_id AND sc.index_id = ind.index_id ORDER BY index_column_id ASC FOR xml path(''))), 2, 8000 )) + ')' + CASE WHEN ind.type = 1 THEN ' WITH (DROP_EXISTING = ON) ON [PRIMARY]' ELSE ' ' END AS Script INTO #indexesScript FROM sys.indexes ind JOIN sys.partition_schemes ps ON ind.data_space_id = ps.data_space_id WHERE Object_name(object_id) = 'AuditBase' AND ps.NAME = 'AuditPScheme' AND is_unique_constraint = 0 SELECT * FROM #indexesScript DECLARE @recreateScript NVARCHAR(max) DECLARE indscript CURSOR FOR SELECT script FROM #indexesScript OPEN indscript FETCH next FROM indscript INTO @recreateScript WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRANSACTION t1 EXECUTE Sp_executesql @recreateScript IF @@ERROR > 0 BEGIN ROLLBACK TRAN t1 DECLARE @message VARCHAR(max) SET @message = 'Audit history recreate index failed. SQL: ' + @recreateScript RAISERROR (@message,10,1) END ELSE BEGIN COMMIT TRAN END FETCH next FROM indscript INTO @recreateScript END DROP partition scheme auditpscheme DROP partition FUNCTION auditpfn CLOSE indscript DEALLOCATE indscript DROP TABLE #indexesScript END ```Depois que o script for concluído, você poderá fazer backup do banco de dados e agora poderá restaurar o banco de dados para uma edição do Microsoft SQL Server Standard.
Mais informações
O recurso de auditoria ainda está funcional no Microsoft SQL Server Standard Edition, no entanto, ao usar a edição Standard, a capacidade de excluir uma partição inteira do histórico de auditoria não está disponível.