1

我正在考虑将更新这些表的临时表和存储过程放入它们自己的模式中。这样当将数据从 SomeTable 导入数据仓库时,我会运行 Initial.StageSomeTable 过程,它将数据插入到 Initial.SomeTable 表中。这样,所有处理 Initial staging 的过程和表都被组合在一起。然后我会有一个 ETL 阶段的验证模式,等等。

这似乎比尝试唯一命名所有这些非常相似的表更干净,因为每个表在整个登台过程中都会有多个自身实例。

问题:在 MS SQL Server 中,使用用户模式将表/过程/视图组合在一起是否适合使用用户模式?或者用户模式是否应该用于安全性,例如将对象的权限分组在一起?

4

3 回答 3

1

我认为它足够合适,这并不重要,如果您喜欢,您可以使用另一个数据库,这实际上是我们所做的。

我不确定你为什么想要一个验证模式,你打算在那里做什么?

于 2010-02-19T21:22:51.513 回答
1

您列出的两个原因(目的/意图、安全性)都是使用模式的正当理由。一旦开始使用它们,在引用对象时应该始终指定模式(尽管我很懒,从不指定 dbo)。

我们使用的一个技巧是在多个模式中的每一个中都有同名表,并结合表分区(在 SQL 2005 及更高版本中可用)。在第一个模式中加载数据,然后在验证后将分区“交换”到 dbo 中——在将 dbo 分区交换到表的“dumpster”模式副本之后。净生产停机时间以秒为单位,所有这些都被仔细地包装在声明的事务中。

于 2010-02-19T21:43:15.203 回答
1

这实际上是推荐的做法。查看来自Project Real的 Microsoft商业智能 ETL 设计实践。您会发现(从第一个链接下载文档)他们使用了很多模式来对仓库中的对象进行分组和识别。

除了 dbo 和 etl,他们还使用 admin、audit、part、olap 等等。

于 2010-02-21T15:16:07.443 回答