Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel bevat een oplossing voor het probleem dat u een Microsoft Dynamics CRM 2011 met Microsoft SQL Server Enterprise-editiedatabase niet kunt herstellen naar een server met Microsoft SQL Server Standard-editie.
              Van toepassing op: Microsoft Dynamics CRM 2011
              Oorspronkelijk KB-nummer: 2567984
Symptomen
Wanneer u een Microsoft SQL Server Enterprise-database probeert te herstellen naar een andere server waarop Microsoft SQL Server Standard wordt uitgevoerd, krijgt u de volgende fout:
Herstellen is mislukt voor Server SQLServerName.
Aanvullende informatie:
Er is een uitzondering opgetreden tijdens het uitvoeren van een Transact-SQL-instructie of batch. (Microsoft.SqlServer.ConnectionInfo)
Database 'Org_MSCRM' kan niet worden gestart in deze editie van SQL Server omdat deze een partitiefunctie AuditPFN bevat. Alleen enterprise-editie van SQL Server ondersteunt partitionering. Database 'Org_MSCRM' kan niet worden gestart omdat een deel van de databasefunctionaliteit niet beschikbaar is in de huidige editie van SQL Server. (Microsoft SQL Server, fout: 905)
Oorzaak
Wanneer Microsoft Dynamics CRM 2011 is geïnstalleerd met een Microsoft SQL Server Enterprise-editie, wordt er een partitie gemaakt voor de controlefunctionaliteit van Microsoft Dynamics CRM 2011. De AuditBase-tabel maakt gebruik van partitionering die alleen beschikbaar is voor Microsoft SQL Server Enterprise.
Resolutie
Gebruik de volgende stappen en scripts om de partitionering te verwijderen. Met het volgende script worden alle indexen op de primaire partitie opnieuw gemaakt en vervolgens wordt de partitie verwijderd.
Zorg ervoor dat u een databaseback-up van de 'Org_MSCRM' database hebt voordat u de volgende stappen uitvoert.
'Org_MSCRM'De database herstellen naar een Microsoft SQL Server Enterprise-editie. Het is raadzaam om een back-up te maken van de database en deze te herstellen in plaats van het script uit te voeren op de productiedatabase.Voer het volgende script uit op de herstelde database.
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 ```Zodra het script is voltooid, kunt u een back-up maken van de database en nu moet u de database kunnen herstellen naar een Microsoft SQL Server Standard-editie.
Meer informatie
De controlefunctie is nog steeds functioneel in de Microsoft SQL Server Standard-editie, maar wanneer u de Standard-editie gebruikt, is de mogelijkheid om een volledige partitie van de controlegeschiedenis te verwijderen niet beschikbaar.