Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Berechtigung zum Abfragen von dbo.sysobjects

Erstens - Sie sollten sys.objects anstelle von dbo.sysobjects verwenden. dbo.sysobjects ist ein SQL 2000-Konstrukt, das aus Gründen der Abwärtskompatibilität nur in SQL 2008 vorhanden ist. sys.objects enthält eine Zeile für jedes benutzerdefinierte, schemabezogene Objekt, das in einer Datenbank erstellt wird, sodass Sie Ihre Abfrage überhaupt nicht filtern müssen. sys.all_objects ist eine Obermenge, die sowohl System- als auch Benutzerobjekte enthält.

Zweitens – auf der Berechtigungsseite – in SQL Server 2005 und späteren Versionen ist die Sichtbarkeit der Metadaten in Katalogansichten auf sicherungsfähige Elemente beschränkt, die ein Benutzer entweder besitzt oder für die dem Benutzer eine Berechtigung erteilt wurde. Daher muss Ihrem Benutzer eine Berechtigung für die Elemente erteilt werden, nach denen er sucht. Wenn Sie dem Benutzer VIEW DEFINITION für das/die Schema(s) in der Datenbank gewähren, würde die Abfrage funktionieren, ohne Zugriff auf Daten zu gewähren.