web-dev-qa-db-ja.com

SQL Serverでスキーマを使用するためのいくつかのベストプラクティスは何ですか?

SQL Serverスキーマのcapabilitiesを理解していますが、ベストプラクティスは何ですか?確かに、それらは別のセキュリティ層を提供し、データベース内のデータベースオブジェクトの論理グループを提供しますが、そこには何が典型的ですか?私の経験では、カスタムメイドのスキーマがあまり利用されていないことがよくあります。これは典型的ですか?カスタムスキーマを使用する頻度が低いシナリオですか?

25
anon

私たちはそれらを使用します

  • クライアントごとに権限を分離する(たとえば、デスクトップ、WebGUIなどのスキーマがある)
  • 論理的なグループ化(例:テーブルのデータおよびステージングスキーマ)。

マリアンによって言及された白書を過ぎた有用で実用的な観察:

  • スキーマに対するGRANT:オブジェクトごとのアクセス許可はありません。そのため、WebGUIスキーマの新しいプロシージャには、スキーマの権限が自動的に付与されます
  • SSMSオブジェクトエクスプローラーでの適切なグループ化
  • OBJECT_SCHEMA_NAME
  • オブジェクト名を修飾する必要があります(これはベストプラクティスです)
17
gbn

このMSDNの記事 SQL Serverのベストプラクティス–データベースオブジェクトスキーマの実装 で答えが見つかると思います。

引用:「このホワイトペーパーでは、ユーザーデータベースのセキュリティ管理を改善する機会について説明し、スキーマを使用して開発データベースと運用データベースでデータベースオブジェクトを管理することに関するいくつかのベストプラクティスの概要を説明します。具体的には、次の3つの実際のシナリオに対処します。

  • データベースの所有者に気付かれずにユーザーがデータベースオブジェクトを変更できないように保護する
  • データベースベースオブジェクト、特に独立系ソフトウェアベンダー(ISV)データベースが、アドホックまたは誤ったユーザーアクセスからアプリケーションパフォーマンスの低下を防ぐ
  • 関連するオブジェクトのグループ(論理エンティティ)を1つの物理データベース内にまとめて、物理データベースの管理オーバーヘッドを削減します。」.

私は特に3番目の部分を使用します-論理的な意味に基づいてオブジェクトのグループを関連付けます-同じデータベース内の異なるプロジェクトに属する異なるスキーマ。

15
Marian