Skip to main content

Downgrade SQL from Enterprise to Standard “Database cannot be started in this edition of SQL server” : Restore failed for Server Error in CRM 2011

Dear All

If you want to downgrade your database from the enterprise to standard here is the following solution



Reference URL:

https://ashwaniashwin.wordpress.com/2013/02/28/database-cannot-be-started-in-this-edition-of-sql-server-restore-failed-for-server-error-in-crm-2011/



Hello Everyone,

Today while trying to restore the Org_MSCRM Database from production server to one of my testing server, I came across a new Error:“Database ‘Org_MSCRM’ cannot be started in this edition of SQL Server because it contains a partition function ‘AuditPFN’. Only Enterprise edition of SQL Server supports partitioning. Database ‘Org_MSCRM’ cannot be started because some of the database functionality is not available in the current edition of SQL Server. (Microsoft SQL Server, Error:
905)”

The error was very clear indeed as my production server was SQL Server Enterprise Edition and testing server was SQL Server Standard Edition.
Basically while installing CRM 2011 in Enterprise edition, a partition is created for auditing functionality in AuditBase table. And since this functionality is missing in rest of the SQL Server editions, the restoration of the Database from Enterprise Edition to Standard Edition throws error. The only possible solutions are either to remove the Audit partitioning or install the Enterprise Edition.

I then came across a Fast Publish article from Microsoft here describing about the issue in detail along with the Script to delete the partition.

Here is a script that you want to run by selecting your database 

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


After successfully running the Script, try to restore the DB again.

Note: Please take a backup before running the script on the Org_MSCRM database.

Even though the Auditing feature is still functional on Standard Edition, the ability to delete the partition of Audit History will not be available.

Thanks.

Comments

Popular posts from this blog

How to convert and crack windows server 2012 from Evaluation to Full

Dear All

This is a way how you Convert Evalution to Full

Step1:

Open CMD and run following command
DISM /online /Get-CurrentEdition


<edition ID> is like ServerStandard with out Eval

Step 2:
DISM /online /Set-Edition:<edition ID> /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula



WINDOWS SERVER 2012
Serial Key

Windows Server 2012
DataCenter: 48HP8-DN98B-MYWDG-T2DCC-8W83P
Datacenter: Y4TGP-NPTV9-HTC2H-7MGQ3-DV4TW

Standard: XC9B7-NBPP2-83J2H-RHMBY-92BT4
Standard R2: DBGBW-NPF86-BJVTX-K3WKJ-MTB6V

Server Essentials:K2XGM-NMBT3-2R6Q8-WF2FK-P36R2


For Standard R2 here is a command
For R2 its like that
DISM /online /Set-Edition:ServerStandard /ProductKey:DBGBW-NPF86-BJVTX-K3WKJ-MTB6V /AcceptEula

Regards

Calling LoadLibraryEx on ISAPI filter “C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll” failed

Dear Readers
if you get the error

Calling LoadLibraryEx on ISAPI filter “C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll” failed


Here is the solution 
Get a command prompt in administrator mode and go to C:\Windows\Microsoft .NET\FrameWork64\v4.xxx
and run aspnet_regiis -r. This will re-register the right libraries. It has happened twice already to me.
For other frameworks (32 bit or other versions of .net make sure you go to the correct folder (i.e. Framework/v2.xxx, etc.)

xxxx is the the number which is present with the folder name so i suggest you guys to check the folder name in your directory

If "run aspnet_regiis -r" is not working and if you get the error run is not recognized command then just type " aspnet_regiis -r" it will run fine

Reason of problem
Your asp.net frame work has been change may be you have install the lower version on the higher version or may be because of any reason you have register another version in your IIS, in my cas…

RegisterStartupScript updated way to right Java script JS (Javascript) in code behind also work with update panel

Dear All
RegisterStartupScript is obsolete now the new way that works with update panel  is given below its is code behind file code also

VB Code Dim csname1 As String = "PopupScript"
Dim cstype As Type = Me.GetType()
Dim cs As ClientScriptManager = Page.ClientScript
Dim cstext1 As String = "alert('Your message');"
cs.RegisterStartupScript(cstype, csname1, cstext1, True)

C# Code
String csname1 = "PopupScript";
Type cstype = this.GetType();
ClientScriptManager cs = Page.ClientScript;
String cstext1 = "alert('Hello World');"; cs.RegisterStartupScript(cstype, csname1, cstext1, true);
I hope it will help you also 
Regards  Rashid Imran Bilgrami