Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Эта статья предлагает решение проблемы, связанной с невозможностью восстановления Microsoft Dynamics CRM 2011 с базой данных версии Microsoft SQL Server Enterprise Edition на сервер с версией Microsoft SQL Server Standard Edition.
Область применения: Microsoft Dynamics CRM 2011
Исходный номер базы знаний: 2567984
Симптомы
При попытке восстановить базу данных Microsoft SQL Server Enterprise на другой сервер под управлением Microsoft SQL Server Standard вы получите следующую ошибку:
Сбой восстановления для сервера "SQLServerName".
Дополнительные сведения:
Возникло исключение при выполнении пакета или инструкции Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)
База данных "Org_MSCRM" не может быть запущена в этом выпуске SQL Server, так как она содержит функцию секционирования AuditPFN. Секционирование поддерживается только в выпуске SQL Server Enterprise Edition. Невозможно запустить базу данных "Org_MSCRM", так как некоторые функции базы данных недоступны в текущем выпуске SQL Server. (Microsoft SQL Server, ошибка: 905)
Причина
При установке Microsoft Dynamics CRM 2011 с использованием издания Microsoft SQL Server Enterprise создается раздел для функциональности аудита Microsoft Dynamics CRM 2011. В таблице AuditBase используется секционирование, доступное только для Microsoft SQL Server Enterprise.
Решение
Чтобы удалить секционирование, выполните следующие действия и скрипт. Следующий скрипт повторно создает все индексы в первичной секции, а затем удаляет секцию.
Перед выполнением следующих действий обязательно создайте резервную копию 'Org_MSCRM' базы данных.
Восстановите
'Org_MSCRM'базу данных до версии Microsoft SQL Server Enterprise. Рекомендуется создать резервную копию и восстановить базу данных вместо запуска скрипта в рабочей базе данных.Выполните следующий скрипт для восстановленной базы данных.
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 ```После завершения скрипта можно создать резервную копию базы данных, и теперь вы сможете восстановить базу данных в выпуске Microsoft SQL Server Standard.
Дополнительная информация
Функция аудита по-прежнему работает в выпуске Microsoft SQL Server Standard, однако при использовании выпуска Standard возможность удаления всей секции журнала аудита недоступна.