【发布时间】:2019-10-13 06:11:21
【问题描述】:
所以我得到了存储 3 年 '17 (corrupt)、'18(corrupt)、'19 的 ETL:
STG_tables:从 3 个不同的数据库导入数据并将其导出到
DWH_tables:这是存储所有历史信息的关系模式。这里只对表和字段进行规范化和参数化,使它们适应开发的逻辑模型,而没有应用业务规则。
DIM_tables:最后,在 Dimensional Fase 中,应用业务规则并针对查询优化表和索引,因为这是分析工具会攻击的地方。
我有两种类型的重装:
每日重新加载:此作业负责执行执行数据仓库每日增量加载所需的 SSIS 包。它只加载维度Fase中大表的最后一个分区(对应当前年份)。
完全重新加载:加载整整 3 年(这个不工作)
这不是我做的,我有 0 个技术文档,所以我只是想弄清楚它是如何工作的,我的想法是,一旦我开始完全重新加载,数据就会恢复。
我在 STG_fase 上遇到错误:
删除表 DWH_PROD.DWH_XX; DROP TABLE ... ':' 分区函数 'pfPetitions' 正在一个或多个分区方案中使用。'。错误的可能原因:查询有问题,属性“ResultSet”设置不正确,参数设置不正确或连接建立不正确。
我不知道如何删除这个分区,所以我可以重新创建它 并且找不到“ResultSet”属性,请帮忙
USE DB;
GO
DROP TABLE DWH_PROD.DWH_ALBARANES_TARIFA;
DROP TABLE DWH_PROD.DWH_PETICIONES;
DROP TABLE DWH_PROD.DWH_SOLICITUDES;
DROP TABLE DWH_PROD.DWH_RESULTADOS;
DROP TABLE DWH_PROD.DWH_INCIDENCIAS;
-------i delete code so the text is not so big------
Here there are all the creation of the drop tables above
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'DWH_ALBARANES_TARIFA')
CREATE TABLE DWH_PROD.DWH_ALBARANES_TARIFA (
);
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'DWH_INCIDENCIAS')
CREATE TABLE DWH_PROD.DWH_INCIDENCIAS (
);
IF EXISTS (SELECT * FROM sys.partition_functions WHERE name = N'pfPeticiones')
DROP PARTITION FUNCTION pfPeticiones;
CREATE PARTITION FUNCTION pfPeticiones (DATE)
AS RANGE RIGHT FOR VALUES
('2017-01-01', '2018-01-01', '2019-01-01');
IF EXISTS (SELECT * FROM sys.partition_schemes WHERE name = N'psPeticiones')
DROP PARTITION SCHEME psPeticiones;
CREATE PARTITION SCHEME psPeticiones
AS PARTITION pfPeticiones
ALL TO ([Primary]);
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'DWH_PETICIONES')
CREATE TABLE DWH_PROD.DWH_PETICIONES (
) ON psPeticiones(FEC_PETICION);
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'DWH_SOLICITUDES')
CREATE TABLE DWH_PROD.DWH_SOLICITUDES (
) ON psPeticiones(FEC_PETICION);
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = N'DWH_RESULTADOS')
CREATE TABLE DWH_PROD.DWH_RESULTADOS (
) ON psPeticiones(FEC_PETICION);
【问题讨论】:
-
主要错误是
The partition function 'pfPetitions' is being used in one or more partition schemes.你必须删除所有与此功能相关的分区方案 -
有几件事,您的错误引用函数 pfPetitions 但是您的脚本 sn-p 显示分区函数 psPeticiones。也许是拼写错误?否则,脚本会翻转函数和模式的删除。将 drop partition scheme 语句移到 drop partition function 语句之前。一般来说,您希望在模式之前创建函数,但在函数之前删除模式。
-
另外,我建议(如果有空间)在运行脚本之前先重命名现有表。这样就可以创建一组新的表,您可以测试您的全部负载。然后,一旦您确定一切都解决了,您就可以删除原始表格。但是,如果由于某种原因出现问题并且您需要时间来弄清楚发生了什么,您可以将原始表格移回并让人们暂时使用它。 (有2019年的数据总比没有数据好)
标签: sql sql-server visual-studio ssis etl