stefankittel
Goto Top

Zugriff auf bestimmte Datensätze verhindern (SQL Server 2008 mit Access 2010 als Frontend)

Hallo,

ich hatte schonmal anders gefragt, inzwischen konnte ich die Datenbank aber auf einen SQL-Server portieren.

Ich habe hier eine Datenbank auf einem SQL Server 2008.
Als Frontend kommte Access 2010 bzw. Access 2010 RunTime zum Einsatz.

Nach einer Neuaufteilung sollen nicht mehr alle Benutzer alle Datensätze sehen dürfen.
Ganz Konkret, alle Kunden.

Mein 1. Gedanke: Zugriff auf Tabelle entziehen, Abfrage mit Filter erstellen und am Client einbinden.
Das funktioniert auch prima, aber: ich würde gerne einen Client für alle Benutzer verwenden. Das erleichter die Pflege der DB doch erheblich.

Zugriffsrechte auf Datensatzebene habe ich nicht gefunden.
Kann man in Abfragen dynamisch den Benutzernamen verwenden?

Alternativ könnte ich natürlich mit VBA beim Start die Verknüpfung immer richtig hinbiegen, erscheint mir aber auch nicht "richtig".

Wie macht man sowas am saubersten?

Danke

Stefan

Content-Key: 159914

Url: https://administrator.de/contentid/159914

Printed on: April 25, 2024 at 10:04 o'clock

Member: Logan000
Logan000 Feb 02, 2011 at 07:34:58 (UTC)
Goto Top
Moin moin

Ich rate mal:

In der Tabelle Kunden befindet sich auch ein Feld in dem eine Art Benutzer ID steht? Quasi der "Eigentümer" des Datensatzes?
Und du möchtest jetzt das, egal welcher User das Frontend startet, immer nur seine Datensätze sieht?

Abfrage mit Filter erstellen und am Client einbinden
Diese Abfrage liegt auf dem Server oder ist das eine Access Abfrage?
Wie gehtst du mit Access auf die SQL DB? via ODBC?

aber: ich würde gerne einen Client für alle Benutzer verwenden.
Davon rate ich lieber ab. Da habe ich keine guten Erfahrungen mit Access gemacht.

Was hindert dich daran z.B. die eine VBA Proc zu schreiben, die den Windows Anmeldenamen ermittet
und damit ein SQL statement zusammenstellt das nur die Benutzereigenen Daten aus Kunden anzeigt?

Gruß L.
Member: StefanKittel
StefanKittel Feb 02, 2011 at 07:40:41 (UTC)
Goto Top
Zitat von @Logan000:
Diese Abfrage liegt auf dem Server oder ist das eine Access Abfrage?
Server

Wie gehtst du mit Access auf die SQL DB? via ODBC?
ODBC

Was hindert dich daran z.B. die eine VBA Proc zu schreiben, die den Windows Anmeldenamen ermittet
und damit ein SQL statement zusammenstellt das nur die Benutzereigenen Daten aus Kunden anzeigt?
Nichts, ich wollte nur sicherstellen, dass er dafür nicht bereits eine Funktion am SQL-Server gibt.
Z.B. in einer Sicht, dass man den Benutzernamen verwenden kann.

Stefan
Member: Logan000
Logan000 Feb 02, 2011 at 11:05:27 (UTC)
Goto Top
Moin Moin

Zitat von @StefanKittel:
Nichts, ich wollte nur sicherstellen, dass er dafür nicht bereits eine Funktion am SQL-Server gibt.
Z.B. in einer Sicht, dass man den Benutzernamen verwenden kann.
Wobei mein 1. Gedanke war die Abfrage unter Access zu verwenden. Aber andersherum sollte es auch gehen.

Views kannst du keine Parameter übergeben.
Du könntest natürlich auf dem SQL Server auch eine Gespeicherte Procedur bauen, die als Parameter den Benutzernamen verarbeiten kann.
Diese soltest du dann von Access aus als SQL PassThrough aufrufen können.

Gruß L.
Member: StefanKittel
StefanKittel Feb 02, 2011 at 11:45:47 (UTC)
Goto Top
Zitat von @Logan000:
Du könntest natürlich auf dem SQL Server auch eine Gespeicherte Procedur bauen, die als Parameter den Benutzernamen
verarbeiten kann.
Diese soltest du dann von Access aus als SQL PassThrough aufrufen können.

Sowas als View wäre meine Idee gewesen, schade.
Da schreib ich doch lieber ne Init Routine die die Verlinkung in Abhängigkeit des Benutzernames anpaßt.
Danke

Stefan