Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo fornisce una risoluzione per il problema che non è possibile ripristinare un database Microsoft Dynamics CRM 2011 con Microsoft SQL Server Enterprise Edition in un server con Microsoft SQL Server Standard Edition.
Si applica a: Microsoft Dynamics CRM 2011
Numero KB originale: 2567984
Sintomi
Quando si tenta di ripristinare un database Microsoft SQL Server Enterprise in un altro server che esegue Microsoft SQL Server Standard, viene visualizzato l'errore seguente:
Ripristino non riuscito per il server 'SQLServerName'.
Informazioni aggiuntive:
Si è verificata un'eccezione durante l'esecuzione di una dichiarazione o batch Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
Impossibile avviare il database 'Org_MSCRM' in questa edizione di SQL Server perché contiene una funzione di partizione 'AuditPFN'. Il partizionamento è supportato solo in SQL Server Enterprise Edition. Impossibile avviare il database 'Org_MSCRM' perché alcune funzionalità del database non sono disponibili nell'edizione corrente di SQL Server. (Microsoft SQL Server, Errore: 905)
Causa
Quando Microsoft Dynamics CRM 2011 viene installato usando un'edizione Microsoft SQL Server Enterprise, viene creata una partizione per la funzionalità di controllo di Microsoft Dynamics CRM 2011. La tabella AuditBase usa il partizionamento disponibile solo per Microsoft SQL Server Enterprise.
Risoluzione
Usare i passaggi e gli script seguenti per rimuovere il partizionamento. Lo script seguente ricrea tutti gli indici nella partizione Primaria e quindi elimina la partizione.
Assicurarsi di disporre di un backup del database di 'Org_MSCRM' prima di eseguire i passaggi seguenti.
Ripristinare il
'Org_MSCRM'database su un'edizione Microsoft SQL Server Enterprise. È consigliabile eseguire il backup e il ripristino del database anziché eseguire lo script nel database di produzione.Eseguire lo script seguente sul database ripristinato.
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 ```Al termine dello script, è possibile eseguire il backup del database e ora dovrebbe essere possibile ripristinare il database in un'edizione Microsoft SQL Server Standard.
Ulteriori informazioni
La funzionalità di controllo è ancora funzionante in Microsoft SQL Server Standard Edition, tuttavia quando si usa l'edizione Standard la possibilità di eliminare un'intera partizione della cronologia di controllo non è disponibile.