2009-07-07 2 views
0

Wir haben ein System mit 2 Clients (die erhöht werden). Diese beiden Clients verbinden sich mit dem gleichen Server/der gleichen Datenbank, jedoch sollte keiner die anderen sensiblen Informationen sehen können. Es gibt jedoch einige nicht vertrauliche Informationen.SQL Server, wie der Zugriff auf Daten zwischen Clients in der gleichen Datenbank zu steuern

Es gibt auch eine administrative Abteilung, die im Auftrag auf beiden Clients arbeitet. Sie dürfen alle sensiblen Daten sehen.

Wir behandeln dies derzeit, indem wir eine ClientID für die fraglichen Tabellen halten und mit einer Mischung aus Sichten und Abfragen die ClientID überprüfen, um den Zugriff für jeden Client zu kontrollieren.

Ich möchte zu einer konsequenten Handhabung von diesem in unserem System, z.B. alle Ansichten oder alle Abfragen, aber ich fragte mich, ob es vielleicht ein einfacheres/besseres Muster gab, als Ansichten zu verwenden, um mit dieser Situation umzugehen?

Wir verwenden Sql Server 2005, jedoch ist ein Upgrade auf 2008 möglich.

Prost

Antwort

2

der logischste Weg ist (indiziert) Ansichten von dem, was kann jeder Benutzer sieht gefiltert zu haben. Hinzufügen von Lese-/Schreibrechten für jeden Client für ihre Ansichten. Admins greifen direkt auf die Tabellen zu.

aber es sieht für mich aus, dass jeder Client eine logisch getrennte Einheit aus den anderen ist. Wenn das der Fall ist, können Sie 1 db pro Client und 1 db für gemeinsame Sachen in Betracht ziehen. Administratoren können auf alles zugreifen, jeder Client kann nur auf seine eigene Datenbank zugreifen und von der allgemeinen Datenbank lesen.

Eine dritte Option ist, in Schemas zu suchen und Ihre Kunden dort zu trennen.

+0

Genau wie wir Berichterstattung in MS Reporting Services behandeln; Wir haben Views, die durch SPID mit Tabellen verbunden werden, die zur Ausführungszeit Berechtigungen für die Daten auf einer Zeilenebene festlegen. – u07ch

+0

verbinden Sie durch Spids? Also füllen Sie die Spid-Tabelle jedes Mal, wenn ein neuer Benutzer eine Verbindung herstellt? –

+0

Also, wenn wir 50 Clients haben, muss die App für die Admins Verbindungen zu allen 50 Datenbanken herstellen? – MrEdmundo

Verwandte Themen