2009-07-07 2 views
0

2つのクライアントを持つシステムがあります(これは増加します)。これらの2つのクライアントは同じサーバー/データベースに接続しますが、どちらも他の機密情報を見ることはできません。ただし、非機密情報を共有するものもあります。SQL Server同じデータベース上のクライアント間のデータへのアクセスを制御する方法

両方のクライアントに代わって機能する管理部門もあります。彼らはすべての機密データを見ることができます。

現在、問題のテーブルに対してClientIDを保持し、ビューとクエリが混在しているため、クライアントIDを確認して各クライアントのアクセスを制御します。

私はこのシステムの一貫した処理に移行したいと考えています。すべてのクエリ、またはすべてのクエリ、しかし、私はちょうどおそらく、この状況を処理するためにビューを使用するより簡単/良いパターンがあるのだろうか?

Sql Server 2005を使用していますが、2008にアップグレードすることは可能です。

乾杯

答えて

2

最も論理的な方法は、各ユーザーが見ることができるものによってフィルタリング(インデックス付き)ビューを持つことです。 ビューのために各クライアントに読み取り/書き込みパーミッションを追加します。管理者はテーブルに直接アクセスします。

しかし、各クライアントは論理的に分離されたエンティティ形式であると私には見えます。 の場合は、1クライアントあたり1 db、共有用に1 dbと考えることがあります。 adminsはすべてにアクセスでき、各クライアントcasはそれ自身のdbにアクセスし、common dbから読み取ります。

第3の選択肢は、スキーマを調べてそこでクライアントを分けることです。

+0

MS Reporting Servicesでのレポート処理の正確な方法。実行時に行レベルのデータに対するアクセス許可を決定するテーブルにSPIDによって結合するビューがあります。 – u07ch

+0

あなたはspidsで参加しますか?新しいユーザーが接続するたびにspidテーブルを作成します。 –

+0

50人のクライアントがあれば、管理者は50のデータベースすべてに接続する必要がありますか? – MrEdmundo