Sql-Server
在 Standard Edition 上恢復數據庫時出現錯誤 909
我遇到了 SQL Server 2012 標準版(64 位)的問題。
我已經重建了一個系統,其軟體規格與之前建構的完全相同(Windows 2012、SQL Server 2012 標準版)。載入大多數數據庫似乎沒有問題,除了少數在嘗試恢復時會導致以下錯誤:
無法在此版本的 SQL Server 中啟動數據庫“xxx”,因為對象“國家/地區”的部分或全部啟用了數據壓縮或 vardecimal 儲存格式。只有 SQL Server Enterprise Edition 支持數據壓縮和 vardecimal 儲存格式。
無法啟動數據庫“xxx”,因為某些數據庫功能在目前版本的 SQL Server 中不可用。(Microsoft SQL Server,錯誤:909)
SQL Server 的早期版本也是標準版本。沒有解除安裝重裝企業版,有解決辦法嗎?我做了一些搜尋,並嘗試了以下操作,但除了將其設置為“緊急模式”之外,它並不想對數據庫做任何事情。
根據錯誤消息,您的數據庫包含表中的企業版功能
Country
。首先,在原始(舊)伺服器上檢查以下內容:SELECT SERVERPROPERTY('Edition');
這應該會告訴您您是在 Standard、Enterprise 還是 Developer Edition 上執行。Developer Edition 支持所有企業功能(具有不同的許可條款)。這可能是問題嗎?
檢查是否在任何對像上啟用了壓縮、分區或 vardecimal:
SELECT s.[name]+'.'+o.[name] AS [object], i.[type_desc] COLLATE database_default+ISNULL(' '+i.[name], '') AS index_name, (CASE WHEN COUNT(DISTINCT p.partition_number)>1 THEN 'Is partitioned' ELSE '' END) AS [partitioned?], ISNULL(MIN(NULLIF(p.data_compression_desc, 'NONE'))+' compression', '') AS [compressed?], (CASE WHEN ISNULL(OBJECTPROPERTY(p.[object_id], 'TableHasVarDecimalStorageFormat'), 0)=0 THEN '' ELSE 'vardecimal' END) AS [vardecimal?] FROM sys.partitions AS p INNER JOIN sys.indexes AS i ON p.[object_id]=i.[object_id] AND p.index_id=i.index_id INNER JOIN sys.objects AS o ON i.[object_id]=o.[object_id] INNER JOIN sys.schemas AS s ON o.[schema_id]=s.[schema_id] GROUP BY p.[object_id], s.[name], o.[name], i.index_id, i.[type_desc], i.[name] ORDER BY s.[name], o.[name], i.index_id
最後,看看有沒有你沒有清理的分區函式或者分區方案:
SELECT [name] FROM sys.partition_functions; SELECT [name] FROM sys.partition_schemes;
您還可以參考以下連結(最初由 Shanky 在評論中提供):