首页 > 解决方案 > 需要帮助将表的模式存储在 SSIS 中的变量中

问题描述

我正在制作一个 SSIS 解决方案来将学生的分数存储在数据仓库中。OLTP 数据库具有不同的架构来分隔校园。OLTP 和数据仓库都有一个“Marks”表,但是数据仓库有一个额外的 CampusID 列,它是一个外键,它引用了一个名为“Campus”的表,该表存储了大学校园的列表。我正在寻找一种将表的模式名称存储在变量中的方法,对其进行评估以确定 CampusID 必须是什么,然后将该 CampusID 插入“Marks”表中。例如,如果 OLTP 表的模式是“AucklandPark”,CampusID 是 1,并且会被插入到“Marks”表中。

这是我们必须做的一个项目。我找到了这个解决方案SSIS - Using the SQL Server Schema Name as a Variable for Queries and Procedure Calls,但它不是动态的;解决方案中的项目变量具有固定值,我必须创建十五个不同的包才能获得所需的结果。

OLTP 数据库中“Marks”表的定义如下所示:

CREATE TABLE AucklandPark.Marks(
    MarkID  INT PRIMARY KEY IDENTITY,
    StudentID   INT NOT NULL FOREIGN KEY REFERENCES AucklandPark.StudentInfo(StudentID) ON DELETE CASCADE,
    FA_1        TINYINT CHECK(FA_1 BETWEEN 0 AND 100),
    FA_2        TINYINT CHECK(FA_2 BETWEEN 0 AND 100),
    FA_3        TINYINT CHECK(FA_3 BETWEEN 0 AND 100),
    SA_1        TINYINT CHECK(SA_1 BETWEEN 0 AND 100),
    SA_2        TINYINT CHECK(SA_2 BETWEEN 0 AND 100),
    INT_1       TINYINT CHECK(INT_1 BETWEEN 0 AND 100),
    INT_2       TINYINT CHECK(INT_2 BETWEEN 0 AND 100),
    INT_3       TINYINT CHECK(INT_3 BETWEEN 0 AND 100)
);
GO

数据仓库的定义如下(使用脚本生成):

CREATE TABLE [dbo].[Marks](
    [DW_MarkID] [int] IDENTITY(1,1) NOT NULL,
    [MarkID] [int] NOT NULL,
    [DW_StudentID] [int] NOT NULL,
    [CourseID] [tinyint] NOT NULL,
    [CampusID] [tinyint] NOT NULL,
    [DW_FacilitatorID] [int] NOT NULL,
    [DateID] [int] NOT NULL,
    [FA_1] [tinyint] NULL,
    [FA_2] [tinyint] NULL,
    [FA_3] [tinyint] NULL,
    [SA_1] [tinyint] NULL,
    [SA_2] [tinyint] NULL,
    [INT_1] [tinyint] NULL,
    [INT_2] [tinyint] NULL,
    [INT_3] [tinyint] NULL,

(我忽略了它之后添加的所有约束)

标签: sql-servertsqlssis

解决方案


我通过为 CampusID 添加一列解决了这个问题。


推荐阅读