在ssas的数据源视图中指定关系时出错

时间:2016-10-21 08:41:52

标签: sql-server ssas cube

当我尝试通过数据源视图设置两个对象之间的关系时,出现此错误消息: -

enter image description here

底层数据库表包含列的不同数据类型(假设一个是int而另一个是smallintbigint)。解决此问题的方法是什么?

1 个答案:

答案 0 :(得分:1)

  

源列和目标列具有不同的数据类型

我看不出这条消息有什么不清楚。如果您有主键,则与该主键相关的任何外键都必须是相同的数据类型。

如果您考虑range and storage requirements of the data types

Data type   Range                                                    Storage
bigint      -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807  8 Bytes
int         -2,147,483,648 to 2,147,483,647                          4 Bytes
smallint    -32,768 to 32,767                                        2 Bytes
tinyint     0 to 255                                                 1 Byte

您可以看到列可以容纳的值范围在数据类型之间存在显着差异。要维护主键和外键之间的关系,类型必须相同,以便它可以保持的值范围匹配。

如果你有一个int主键但是smallint外键,那么外键列就不可能保存一个大于32,767的值,因为主键可以保持更大的价值。

因此,解决此问题的方法是在创建关系之前更新要用作外键的列的数据类型以匹配主键。