Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet article fournit une résolution du problème que vous ne pouvez pas restaurer une base de données Microsoft Dynamics CRM 2011 avec Microsoft SQL Server Entreprise edition sur un serveur avec l’édition Microsoft SQL Server Standard.
S’applique à : Microsoft Dynamics CRM 2011
Numéro de base de connaissances d’origine : 2567984
Symptômes
Lorsque vous essayez de restaurer une base de données Microsoft SQL Server Entreprise sur un autre serveur exécutant Microsoft SQL Server Standard, vous obtenez l’erreur suivante :
La restauration a échoué pour le serveur « SQLServerName ».
Informations complémentaires :
Une exception s'est produite lors de l'exécution d'une instruction ou d'un lot Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
La base de données « Org_MSCRM » ne peut pas être démarrée dans cette édition de SQL Server, car elle contient une fonction de partition « AuditPFN ». Seule l'édition Entreprise de SQL Server prend en charge le partitionnement. La base de données « Org_MSCRM » ne peut pas être démarrée, car certaines fonctionnalités de la base de données ne sont pas disponibles dans l’édition actuelle de SQL Server. (Microsoft SQL Server, Erreur : 905)
La cause
Lorsque Microsoft Dynamics CRM 2011 est installé à l’aide d’une édition Microsoft SQL Server Entreprise, une partition est créée pour la fonctionnalité d’audit de Microsoft Dynamics CRM 2011. La table AuditBase utilise le partitionnement disponible uniquement pour Microsoft SQL Server Entreprise.
Résolution
Utilisez les étapes et le script suivants pour supprimer le partitionnement. Le script suivant recrée tous les index sur la partition principale, puis supprime la partition.
Veillez à disposer d’une sauvegarde de la base de données avant 'Org_MSCRM' d’effectuer les étapes suivantes.
Restaurez la
'Org_MSCRM'base de données dans une édition Microsoft SQL Server Entreprise. Il est recommandé de sauvegarder et de restaurer la base de données au lieu d’exécuter le script sur la base de données de production.Exécutez le script suivant sur la base de données restaurée.
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 ```Une fois le script terminé, vous pouvez sauvegarder la base de données et maintenant vous devez être en mesure de restaurer la base de données dans une édition Microsoft SQL Server Standard.
Plus d’informations
La fonctionnalité d’audit est toujours fonctionnelle sur l’édition Microsoft SQL Server Standard. Toutefois, lorsque vous utilisez l’édition Standard, la possibilité de supprimer une partition entière de l’historique d’audit n’est pas disponible.