在 SQL Server 中使用架构的最佳实践有哪些?

26 schema sql-server-2008 sql-server

我了解SQL Server 架构的功能,但最佳实践是什么?当然,它们提供了另一层安全性,并在数据库内提供数据库对象的逻辑分组,但那里的典型情况是什么?根据我的经验,我经常看不到许多定制的模式被利用。这是典型的吗?是不是应该使用自定义模式的不太频繁的场景?

gbn*_*gbn 18

我们使用它们

  • 为每个客户端分离权限(例如,我们有桌面、WebGUI 等架构)
  • 用于逻辑分组,例如(我们表的数据和暂存模式)。

玛丽安提到的白皮书中有用且实用的观察:

  • 架构上的 GRANT:每个对象没有更多权限。所以 WebGUI 模式中的新 proc 自动拥有该模式的权限
  • SSMS 对象资源管理器中的良好分组
  • OBJECT_SCHEMA_NAME
  • 您被迫限定对象名称(这是最佳实践)


Mar*_*ian 15

我认为可以在这篇 MSDN 文章中找到答案:SQL Server 最佳实践 – 数据库对象架构的实现

引用:“本白皮书讨论了改进用户数据库安全管理的机会,并概述了有关使用模式管理开发和生产数据库中的数据库对象的一些最佳实践。具体而言,它解决了三个现实世界的场景:

  • 保护数据库对象不被用户在数据库所有者不知情的情况下更改
  • 防止数据库基础对象,特别是独立软件供应商 (ISV) 数据库,防止临时或不正确的用户访问导致应用程序性能不佳
  • 将相关的对象组(逻辑实体)集中在一个物理数据库中,以减少物理数据库管理开销”。

我特别使用第三部分——根据对象的逻辑含义将对象组关联在一起——属于同一数据库内不同项目的不同模式。