4GB文件大小限制接收错误,即使兼容级别为1100



我们目前正在创建一个OLAP多维数据集,使用基于事实表的退化维度链接到另一个一对多事实表。我们将SQL Server 2012上的源数据库的兼容性级别设置为SQL Server 2012 (110)。我们已经将这个退化维度上的stringstoragecompatibilitylevel也设置为1100。我们甚至将所有维度和多维数据集分区都设置为使用1100。然而,我们仍然得到以下错误:

Processing Dimension Attribute 'Data Time Period ID' failed. 155130000 rows have been read.
    Start time: 7/21/2016 9:31:08 AM; End time: 7/22/2016 10:08:00 AM; Duration: 24:36:52
    Error Messages 1
        File system error: A string store or binary store with a compatibility level of '1050'
        is at the maximum file size of 4 gigabytes. To store additional strings, you can change
        the StringStoresCompatibilityLevel property of the associated dimension or distinct count
        measure to '1100' and reprocess. This option is only available on databases with a
        compatibility level of '1100' or higher.
        Physical file: \?I:s2012OLAPDataDATAwarehouse.0.dbDimfactDegenerate.0.dim18.Data Time Period ID.asstore.
        Logical file: .
        Errors in the OLAP storage engine: An error occurred while the 'Data Time Period ID' attribute
        of the 'DimfactDegenerate' dimension from the 'DATAwarehouse' database was being processed.

目标OLAP数据库、维度、多维数据集分区和源数据仓库都设置为使用1100。我已经通过编写数据库脚本并搜索兼容性级别,验证了OLAP数据库/维度/分区都在1100上。我甚至搜索了1050,但它没有显示在脚本中。

事实表中大约有9亿条记录。桥接表包含18亿条记录。基于事实表的退化维度中仅使用的2列的总大小约为15GB(基于仅这些列的平面文件输出-非常靠后)。添加退化维度的所有行都是唯一的。从阅读兼容性级别应该如何"通过"我们感到满意:

  1. 数据库源位于SQL Server 2012上,并设置了兼容级别
  2. 目标OLAP数据库正在使用1100兼容性
  3. 多维数据集分区正在使用1100兼容性
  4. 维度使用1100兼容性
  5. 有650亿以下的记录
  6. 所有记录都是唯一的

对于这个看似不太可能的错误,我还有什么其他的选择或设计更改?

对于所有仍在为这个主题而挣扎的人:

<Alter ObjectExpansion="ExpandFull" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>YourOlapDbNameHere</DatabaseID>
    </Object>
    <ObjectDefinition>
        <Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400" xmlns:ddl500="http://schemas.microsoft.com/analysisservices/2013/engine/500" xmlns:ddl500_500="http://schemas.microsoft.com/analysisservices/2013/engine/500/500">
            <ID>YourOlapDbNameHere</ID>
            <Name>YourOlapDbNameHere</Name>
            <ddl200:CompatibilityLevel>1100</ddl200:CompatibilityLevel>
            <Language>1033</Language>
            <Collation>Latin1_General_CI_AS</Collation>
            <DataSourceImpersonationInfo>
                <ImpersonationMode>Default</ImpersonationMode>

您必须编辑C:\Program Files\Microsoft SQL Server\MSAS14.MSSQLSERVER\OLAP\Data中的xml配置文件,并且所有属性都引用设置为11 的StringStoresCompatibilityLevel

在最近的一次部署之后,即使该维度没有修改,我也会遇到这种情况。我们将字符串存储兼容性级别更改为1100,但仍然没有成功。

我们的解决方案是删除数据库,然后从VS重新部署并进行处理。幸运的是,这是一个测试环境,所以对最终用户没有影响。

将字符串存储兼容性级别更新为1100后,在FULL模式下处理维度-这必须修复错误

最新更新