sql-server - 需要帮助将表的模式存储在 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,
(我忽略了它之后添加的所有约束)
解决方案
我通过为 CampusID 添加一列解决了这个问题。
推荐阅读
- kubernetes - volumeMounts: 在 kubernetes pod 中可以是可选的吗
- matlab - Matlab 如何应用 ASDR 曲线以获得更平滑的声音(实施问题)
- mysql - 如何在 GCP 上使用 MySQL 运行 Ghost?
- c# - 从 Jquery 将值传递给 href
- python-3.x - 在 tcolorbox 中写入 SQL 查询的输出时不需要的字符
- r - 如何根据一个变量(R)通过ggplot绘制线和点?
- c - 使用 sprintf()/write() 的 C 程序有多余的字符
- xamarin.forms - Xamarin 表单:当新版本可用时,AppStore 应用程序页面未打开?
- r - Twitter 流与 R 包 rtweet 过早断开连接
- winapi - SetWindowsHookEx() 设置的钩子按什么顺序接收消息?