我们有一个包含 5 亿行的事实表(10 年的数据 - 60GB)。我在数据库级别和 SSAS 表格多维数据集级别对这个表进行了分区——每个分区一个月,以提高整体浏览性能和 SSAS 多维数据集处理时间。但是上次听说为SSAS Tabular cube配置2个以上的分区不太好。每个表格立方体最多应该有 2 个分区。你听说过类似的事情吗?真的吗 ?
Tomasz Wieczorkowski's questions
你能看看我下面的数据仓库索引(SQL Server 2014 SP1 Ent)方法并告诉我它是正确的还是我应该改变它?(我们的数据仓库大部分时间用于 SSAS Cube,有时用于直接报告)
我的索引方法:
- 所有主键(在维度表中)都有一个聚簇索引
- 对于更大的维度表(50k+ 行),我为每个经常使用的列提供了一个专用的非聚集索引
- 所有事实表都实现了 PK 聚簇索引(在单个非 FK 列上,如 FactTableKey)——但我认为不应将其放置在那里
- 所有外键(在事实表中)都有一个专用的非聚集索引(其中每个 FK 列)
- 此外,我正在考虑在 Fact 表上实施 CLUSTERED COLUMNSTORE INDEX,而不是为每个 FK 实施许多非聚集索引 - 但在这种情况下,我认为这是不推荐的解决方案
此外,在我使用 Visual Studio SSDT 的测试实验室中,我尝试将 CCI 索引放在属于 FILEGROUP 的事实表上,但我收到一条错误消息,提示我无法在属于 FILEGROUP 的表上使用 CCI。奇怪的是我可以直接从 SSMS 创建这样的 CCI。Visual Stusio 问题或 SSMS 错误?
我在使用 SSISDB 数据库的 Visual Studio SSDT 项目中有一个存储过程。我收到类似“未解决的对 SSISDB 的引用”的警告。我试图创建一个新的引用,但我只能选择“master”或“msdb”数据库。有什么想法可以修复此对 SSISDB 的引用问题吗?
我有一个与缺少对 Visual Studio SSDT 中存在的表或视图的引用有关的问题。例如,我有两个 SSDT 项目。一个用于数据库 X,第二个用于数据库 Y。在项目 X 中,我创建了对数据库 Y 的引用以及对项目 Y 中的表的存储过程。直到上次我在项目 Y 中创建下一个表“abc”之前,一切都运行良好。现在,当我尝试使用 Project YI 中的“abc”表在 Project X 中创建存储过程时,无法解析其名称。在项目 X(FROM 子句)的下拉列表中,我可以看到项目 Y 中的所有表,除了最后一个表,我得到蓝色下划线和未解决的引用警告。
有没有办法以某种方式用表格刷新这个下拉列表(可能类似于我在 SSMS 中刷新 IntelliSense 缓存?
我正在从 Internet 上的 XML 文件中获取数据,如下所示:
<?xml version="1.0" encoding="ISO-8859-1"?>
-<exchangerates type="Exhange rates" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" refamt="1" refcur="DKK" author="Bank">
-<dailyrates id="2016-07-22">
<currency rate="505.47" desc="Australian dollars" code="AUD"/>
<currency rate="380.36" desc="Bulgarian lev" code="BGN"/>
<currency rate="205.85" desc="Brazilian real" code="BRL"/>
<currency rate="515.31" desc="Canadian dollars" code="CAD"/>
<currency rate="684.99" desc="Swiss francs" code="CHF"/>
<currency rate="101.21" desc="Chinese yuan renminbi" code="CNY"/>
</dailyrates>
</exchangerates>
XSD 文件如下所示:
<?xml version="1.0"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="exchangerates">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="dailyrates">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="currency">
<xs:complexType>
<xs:attribute name="code" type="xs:string" use="optional" />
<xs:attribute name="desc" type="xs:string" use="optional" />
<xs:attribute name="rate" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:date" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="optional" />
<xs:attribute name="author" type="xs:string" use="optional" />
<xs:attribute name="refcur" type="xs:string" use="optional" />
<xs:attribute name="refamt" type="xs:unsignedByte" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
但在 SSIS(来自 XML Source Task)中,我得到如下数据。最后一列显示“1”而不是“日期”(在本例中为 2016-07-22)。我需要此日期位于“dailyrates_Id”列的每一行中。任何想法如何解决这个问题?
code desc rate dailyrates_Id
AUD Australian dollars 505.47 1
BGN Bulgarian lev 380.36 1
BRL Brazilian real 205.85 1
CAD Canadian dollars 515.31 1
我在带有表的文件夹上选择了“从项目中排除”(数据库首先导入到项目中)。现在我想将此文件夹重新包含到项目中。在“添加现有项目”选项中这是不可能的。只有文件可以这样添加。你知道怎么做吗 ?是否有可能或者我应该重新创建文件夹并再次手动添加文件?
想请问一下,如何将仅在Team Foundation Server 2013 中签入的更改发布到SQL Server?这是我安装的 TFS 2013 的新安装。
目前,当我创建像表这样的新对象作为项目的一部分并且不在此表上签入并接下来发布项目时,无论如何都会发布此类表。我在想只有签入(批准)的更改才会发布到 SQL Server(没有未经批准的对象)。
这很重要,因为我只想将完整的对象发布到 SQL Server。没有仍在开发中的对象。
我创建了如下所示的主要 SELECT 语句。对于 Base 表中的每一行(基于 IDKey,我添加了一些列,这些列的值来自几个表的 INNER JOIN 结果。
SELECT
IDKey,
Name,
(select Amount from Table1 INNER JOIN Table2 ... where ID=IDKey) AS AmountTypeX,
(select Amount from Table1 INNER JOIN Table2 ... where ID=IDKey) AS AmountTypeY
FROM BaseTable
基表:
IDKey Name
----------
1 Ian
2 John
3 Ann
...
几个表 Table1, Table2... 的内部连接:
ID Amount Type
--------------
1 100 X
1 200 Y
2 300 X
2 400 Y
3 500 X
3 600 Y
...
结果看起来像:
IDKey Name AmountTypeX AmountTypeY
-------------------------------------
1 Ian 100 200
2 John 300 400
3 Ann 500 600
...
您是否有任何建议如何在开始时避免主查询中的这种嵌套 SELECT 语句并使该查询更简单和更有效?
我正在考虑将 INNER JOIN 结果的 PIVOTING 看起来如下所示(一行中特定 ID 的所有数据),然后使用主查询进行 JOIN 但不知道如何执行此操作并且是否可能。
ID X Y
-----------
1 100 200
2 300 400
3 500 600
...