Mithilfe von SQL können Sie Sichten aus den Tabellen und Feature-Classes einer Enterprise-Geodatabase erstellen und anpassen, welche Spalten oder Datensätze Benutzer mit Anzeigeberechtigung sehen dürfen; des Weiteren können Sie in einer Sicht Informationen aus zwei Tabellen bzw. aus einer Feature-Class und einer Tabelle zusammenfassen. Wenn Sie in die Sichtdefinition die räumliche Spalte einbeziehen, können Benutzer die Features auf einer Karte in einem ArcGIS Desktop-Client anzeigen.
Mit den Beispielen in diesem Thema wird veranschaulicht, wie mit SQL in einer Microsoft SQL Server-Datenbank Sichten erstellt werden. Mit einer Sicht wird der Benutzerzugriff auf bestimmte Spalten eingeschränkt. In der anderen Sicht werden Inhalte aus zwei verschiedenen Tabellen dargestellt. Die Beispiele basieren auf Tabellen mit den folgenden Definitionen:
Tabellendefinition für "employees"
CREATE TABLE employees (
emp_id integer not null,
emp_name nvarchar(32),
department smallint not null,
hire_date datetime2 not null
);
Tabellendefinition für "regions"
CREATE TABLE regions( objectid integer not null, emp_id integer not null, reg_id integer not null, rname varchar(32), region geometry
);
Erteilen von Berechtigungen für die Tabellen
Wenn der Benutzer, der die Sicht erstellt, nicht der Besitzer der Tabellen ist, auf denen die Sicht basiert, muss der Tabellenbesitzer dem Ersteller der Sicht mindestens eine Berechtigung zur Auswahl aus den Tabellen erteilen.
In diesem Beispiel befinden sich die Tabellen, auf denen die Sicht basiert ("employees" und "regions"), im Besitz von Benutzer "gdb". Die Sicht wird durch den Benutzer "rocket" erstellt.
GRANT SELECT
ON gdb.employees
TO rocket;
GRANT SELECT
ON gdb.regions
TO rocket;
Erstellen einer Sicht zur Zugriffsbeschränkung
In diesem Beispiel erstellt Benutzer "rocket" eine Sicht (view_dept_201) für die Tabelle "employees", um den Zugriff auf die Zeilen zu beschränken, deren Abteilung ("department") 201 ist:
CREATE VIEW view_dept_201
AS SELECT emp_id, name, hire_date
FROM gdb.employees
WHERE department = 201;
Erstellen einer Sicht zum Verbinden zweier Tabellen
In diesem Beispiel wird mit der Sicht "emp_regions_view" eine Tabelle mit räumlichen Daten (Feature-Class) anhand der Spalte "emp_id" mit einer Tabelle mit nichträumlichen Daten zusammengeführt. Die Sicht enthält die Spalte "ObjectID", die räumliche Spalte (region) und den Namen der Region (rname) aus der Feature-Class "regions" sowie die Spalten "employee name" und "ID" aus der Tabelle "employees".
CREATE VIEW emp_regions_view
AS SELECT (e.emp_name,e.emp_id,r.objectid,r.rname,r.region)
FROM employees e, regions r
WHERE e.emp_id = r.emp_id;
Erteilen von Berechtigungen für die Sichten
Sie können bestimmten Benutzern Berechtigungen für die Sichten erteilen, ohne den Benutzern Zugriff auf die Basistabellen ("employees" und "regions") zu erteilen. In diesem Beispiel erhält der Benutzer "dispatch_mgr" eine SELECT-Berechtigung für beide Sichten:
GRANT SELECT ON rocket.view_dept_201 TO dispatch_mgr;
GRANT SELECT ON rocket.emp_regions_view
TO dispatch_mgr;
Der Benutzer "dispatch_mgr" hat nun Zugriff auf die Sicht "view_dept_201" und kann die Datensätze aller Mitarbeiter der Abteilung 201 sehen; über eine Datenbankverbindung in ArcMap oder ArcGIS Pro hat er Zugriff auf die Sicht "emp_region_view", in der er alle Regionen sehen kann. Wenn der Benutzer "dispatch_mgr" in der Sicht eine Abfrage auf eine Region durchführt, gibt ArcGIS den Namen der Region sowie die Namen und die IDs aller Mitarbeiter in dieser Region zurück.