我遇到了Server 2012标准版(64位)的问题。
我已经重建了一个系统,它的软件规格与以前构建的完全相同(Windows 2012,SQL Server 2012标准版)。加载大多数数据库似乎不会引起任何问题,只有少数数据库在尝试恢复时会导致以下错误:
数据库'xxx‘无法在此版本的Server中启动,因为使用数据压缩或var十进制存储格式启用了部分或全部对象“Country”。只支持数据压缩和var十进制存储格式。数据库'xxx‘无法启动,因为某些数据库功能在当前版本的Server中不可用。(Microsoft SQL Server,错误: 909)
以前版本的Server也是标准版本。除了卸载和重新安装企业版本,有没有解决方案?我做了一些搜索,并尝试了以下步骤,但它实际上不想对数据库做任何事情,只想将它设置为“紧急模式”。
发布于 2016-02-06 14:01:58
根据错误消息,您的数据库在表Country
中包含Enterprise特性。首先,在原始(旧)服务器上检查以下内容:
SELECT SERVERPROPERTY('Edition');
这应该会告诉您,您是在运行标准版、企业版还是开发者版。Developer支持所有的企业特性(有不同的许可条款)。这会是问题吗?
检查在任何对象上是否启用了压缩、分区或var十进制:
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在评论中提供):
https://dba.stackexchange.com/questions/128486
复制相似问题