Wir haben verschiedene Datenbankobjekte wie gespeicherte Prozeduren, Trigger, Funktionen und Indizes in einem relationalen Datenbank. Oft möchten wir Definitionen für diese Objekte anzeigen. Wir können entweder SSMS graphical way oder t-SQL verwenden, um Skripte zu generieren.
Zum Beispiel möchten wir die Definition einer SQL-Ansicht anzeigen .. Lassen Sie uns beide Möglichkeiten zum Generieren von Skripten untersuchen.,
Verschiedene Methoden zum Anzeigen der Definition von Objekten
SSMS-Skript-Assistent:
Erweitern Sie die Datenbank und gehen Sie zu Ansichten. Klicken Sie mit der rechten Maustaste auf eine bestimmte Ansicht, für die ein Skript generiert werden soll, und klicken Sie auf Skriptansicht als ->Create To.
Wir können das Skript auf folgende Weise abrufen.
- Im neuen Abfragefenster
- Holen Sie sich das Skript in die .,SQL-Datei
- Kopieren Sie das Skript in die Zwischenablage
- Skript in einem SQL-Agent-Job abrufen
Skript generieren Assistent:
Wir können den Skript-Assistenten auch in SSMS verwenden, um ein Skript zu generieren. Klicken Sie mit der rechten Maustaste auf eine Datenbank und gehen Sie zu Tasks -> Skripte generieren.
Wählen Sie im Assistenten Skript generieren das spezifische Datenbankobjekt aus und klicken Sie auf Weiter.
Sie können den Assistenten abschließen, um die Schrift.,
Mit t-SQL:
können wir auch T-SQL-Abfragen verwenden, um das Skript der Objekte abzurufen. Sie können die folgenden t-SQL-Methoden verwenden, um Definitionen für ein Objekt abzurufen.
- Holen Sie sich Skripte mit dem Information_Schama.,Views:
Führen Sie folgende query in der Quell-Datenbank aus und geben Sie den Namen des Objekts in die where-Klausel
1234SELECT TABLE_NAME, wie ViewName,VIEW_DEFINITION als ViewDefinitionFROM INFORMATION_SCHEMA.,Viewswhere TABLE_NAME=’vEmployee‘ - Sp_helptext system procedure:
You can use sp_helptext system procedure as well to get the script. You need to specify the object name along with the schema if it is other than dbo.
1EXEC sp_helptext ‚.,‘ - object_definition Funktion
Wir können auch eine object_definition Funktion verwenden, um ein Skript für das Objekt zu generieren. In der folgenden Abfrage wir verwenden die object_definition Funktion für einen Blick vEmployee in der AdventureWorks2017 Datenbank
1SELECT object_definition (OBJECT_ID(N‘.,‘))
Erforderliche Berechtigungen zum Generieren von Objekten Skript
Es ist ein wesentlicher Aspekt für jeden DBA, die Benutzerberechtigungen für den Zugriff auf die Objekte zu steuern. Oft benötigen Benutzer zusätzliche Rechte für eine Datenbank, um ihre Pflicht zu erfüllen. Standardmäßig verfügen Benutzer mit öffentlicher Rolle nicht über Berechtigungen zum Anzeigen der Definition eines Objekts. Es ist nützlich für die Entwickler, die Objektdefinitionen abzurufen, damit sie diese in einer Nichtproduktionsumgebung ausführen können., Wir möchten Benutzern auch keine privilegierten Berechtigungen erteilen, insbesondere nicht in der Produktionsumgebung.
Erstellen wir einen neuen Datenbankbenutzer und geben eine öffentliche Rolle in der AdventureWorks2014-Datenbank an.
Verbinden Sie sich mit SQL Server mithilfe der Anmeldeinformationen mit öffentlicher Rollenberechtigung.
Führen Sie die Abfrage aus, um die Ansichtsdefinition eines Objekts abzurufen. Der Befehl sp_helptext gibt eine Fehlermeldung aus, dass ein Objekt nicht in der Datenbank vorhanden ist.,
Wenn wir versuchen, das Skript mit INFORMATION_SCHEMA.Ansichten, es gibt keine Fehlermeldung; Es gibt jedoch keine Zeile zurück.
Sie können das SSMS auch nicht verwenden, da es die Objekte für den öffentlichen Rollenzugriff nicht anzeigt.
Wir können die Berechtigung View Definition in SQL Server verwenden, damit Benutzer die Objektdefinitionen anzeigen können. Wir können diesen Zugriff entweder einer öffentlichen Rolle oder einem einzelnen Benutzer gewähren.,
- Wenn wir allen Benutzern mit öffentlicher Rolle Ansichtsobjektdefinitionsrechte gewähren möchten, führen Sie die folgende Abfrage aus.,v>
123USE AdventureWorks2017GOGRANT VIEW ANY DEFINITION TO Rajendra - To grant View Definition rights to a specific user and an object for a particular database
1GRANT VIEW DEFINITION on ., TO Rajendra
Let’s provide access to a specific user (Rajendra) on a specific object ( .) and verify the permissions to view the definition of an object.
1
|
EXEC sp_helptext ‚.,‘
|
Sie können andere Methoden ausprobieren, um die im vorherigen Abschnitt angegebenen Objektdefinitionen anzuzeigen. Sie können die Verbindung auch in SSMS aktualisieren, um alle Objekte anzuzeigen, nachdem Sie die Ansichtsdefinitionsberechtigungen zugewiesen haben.
Wir können die Berechtigungen mit dem Befehl sp_helprotect verfolgen.,
- Im folgenden Screenshot können Sie Folgendes beobachten:
- Objekt: vEmployee
- Besitzer( Schema) : HumanResources
- Grantee ( Benutzer): Rajendra
- Grantor ( Berechtigung Grantor): dbo
- Berechtigung: Grant
- Aktion( Rechte): Ansicht Definition
Widerrufen Ansicht Definitionen Berechtigung
Wir haben gelernt, die Ansicht Definition Berechtigungen für einen Benutzer, Rolle oder Objekt in SQL Server im vorherigen Abschnitt zu gewähren., Es ist auch ein wichtiger Aspekt zu wissen, wie diese Ansichtsdefinitionsberechtigungen widerrufen werden. Oft möchten wir einem Benutzer möglicherweise temporären Zugriff gewähren und ihn später widerrufen. Wir können die Berechtigungen für den Benutzer in allen Datenbanken mit dem Befehl View Any Definition widerrufen.,iv>
1
2
3
|
USE AdventureWorks2017
GO
REVOKE VIEW DEFINITION on ., UM Rajendra
|
In diesem Artikel haben wir untersucht Berechtigungen für die Ansichtsdefinition in SQL Server erteilen und widerrufen Definitionen für ein Objekt anzuzeigen. Es bietet Ihnen die notwendigen Informationen, um die Berechtigungen für Objektdefinitionen zu verwalten. Wenn Sie Kommentare oder Fragen haben, können Sie diese gerne in den Kommentaren unten hinterlassen.,
- Author
- Recent Posts
Er ist der Schöpfer einer der größten kostenlosen Online-Sammlungen von Artikeln zu einem einzigen Thema, mit seiner 50-teiligen Serie auf SQL Server Immer auf Verfügbarkeitsgruppen. Aufgrund seines Beitrags zur SQL Server-Community wurde er 2020 und 2021 kontinuierlich mit verschiedenen Preisen ausgezeichnet, darunter mit dem renommierten „Best Author of the year“ bei SQLShack.,
Raj ist immer an neuen Herausforderungen interessiert, wenn Sie also Beratungshilfe zu einem Thema benötigen, das in seinen Schriften behandelt wird, kann er bei Rajendra erreicht werden.gupta16@gmail.,com
Alle Beiträge von Rajendra Gupta anzeigen
- Sitzungs – Timeouts in SQL Server Immer in Verfügbarkeitsgruppen – 8. Februar 2021
- Kleinere und größere Versions – Upgrades für AWS RDS SQL Server durchführen-29.
- Bereitstellung von AWS RDS PostgreSQL Instanzen-27. Januar 2021
Leave a Reply