Wie setzt man Berechtigungen auf schema-Objekte der Zugriff auf andere Schemata?

Ich habe 2 schemas und eines der Objekte in dem ersten schema muss für den Zugriff auf eine Objekt in das andere schema. Zum Beispiel:

CREATE VIEW I.ITest
AS
    SELECT 1 as TestColumn
GO
CREATE VIEW O.OTest
AS
    SELECT * FROM I.ITest
GO

EXEC ('SELECT * FROM O.OTest') AS USER = 'TestUser'

DROP VIEW O.OTest
DROP VIEW I.ITest

Im obigen Beispiel "TestUser" hat nur Zugriff auf die " O " - Schema. Also das wählen selbst funktioniert gut, aber da die Ansicht ist dabei eine Auswahl aus einem anderen schema 'ich', dann schlägt es fehl, mit der Fehlermeldung:

Die SELECT-Berechtigung verweigert wurde, auf das Objekt 'ITest', Datenbank 'MyDB', das schema 'ich'.

Dies zu umgehen, kann ich Ihnen die 'O' - schema die Berechtigung zum Zugriff auf die " ich " - schema, aber das klingt nicht richtig und sieht auch unter Umgehung der schema-Berechtigungen.

Was kann getan werden? Mache ich das alle falsch? Was ist die beste Praxis in diesem Szenario?

Dank

UPDATE: Mein schemas im Besitz von unterschiedlichen db-Rollen-also habe ich, um dieses problem, indem einfach die Besitzer der beiden zu dbo und dann geben die db-Rolle die Berechtigung zum Zugriff auf das schema. Dies bedeutete, dass der Besitzer dbo konnte alles sehen und ich könnte dann geben die ausdrückliche Genehmigung der db-Rolle nur und der rest der db-Objekte nicht verfügbar waren, es sei denn, über dieses schema. Vielen Dank für Ihre Hilfe

  • Können Sie auch Ihre create user-Anweisung und das Standard-schema, dass jeder Benutzer gehört zu bitte.
  • Ich habe die Benutzer in der via management studio, also nicht über ein script spielt es eine Rolle?
InformationsquelleAutor HAdes | 2009-11-02
Schreibe einen Kommentar