ALTER VIEW (Transact-SQL)
Ändert eine zuvor erstellte Sicht. Darunter fallen auch indizierte Sichten. ALTER VIEW wirkt sich nicht auf abhängige gespeicherte Prozeduren oder Trigger aus und ändert keine Berechtigungen. Weitere Informationen zu den in der ALTER VIEW-Anweisung verwendeten Parametern finden Sie unter CREATE VIEW (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ] }
Argumente
- schema_name
Ist der Name des Schemas, zu dem die Sicht gehört.
- view_name
Die zu ändernde Sicht.
column
Ist der Name von einer oder von mehreren, durch Kommas voneinander getrennten Spalten, die Teil der angegebenen Sicht sein sollen.Wichtig: Spaltenberechtigungen bleiben nur erhalten, wenn die Spalten vor und nach der Ausführung von ALTER VIEW den gleichen Namen haben. Hinweis: In den Spalten für die Sicht gelten die Berechtigungen für einen Spaltennamen über eine CREATE VIEW- oder ALTER VIEW-Anweisung hinaus, unabhängig von der Quelle der zugrunde liegenden Daten. Wenn beispielsweise Berechtigungen für die SalesOrderID-Spalte in einer CREATE VIEW-Anweisung erteilt werden, kann die SalesOrderID-Spalte beispielsweise zu OrderRef mithilfe einer ALTER VIEW-Anweisung umbenannt werden und weiterhin über die mithilfe von SalesOrderID der Sicht zugeordneten Berechtigungen verfügen.
- ENCRYPTION
Verschlüsselt die sys.syscomments-Einträge, die den Text der ALTER VIEW-Anweisung enthalten. Mithilfe von WITH ENCRYPTION kann verhindert werden, dass die Sicht als Teil der SQL Server-Replikation veröffentlicht wird.
SCHEMABINDING
Bindet die Sicht an das Schema der zugrunde liegenden Basistabellen. Wird SCHEMABINDING angegeben, ist es nicht möglich, Änderungen der Basistabellen auszuführen, die sich auf die Sichtdefinition auswirken würden. Die Sichtdefinition muss zuerst geändert oder gelöscht werden, um Abhängigkeiten von der zu ändernden Tabelle zu entfernen. Wenn Sie SCHEMABINDING verwenden, muss select_statement die zweiteiligen Namen (schema**.**object) der Tabellen, Sichten oder benutzerdefinierten Funktionen einschließen, auf die verwiesen wird. Alle Objekte, auf die verwiesen wird, müssen sich in derselben Datenbank befinden.Sichten oder Tabellen, die Bestandteil einer mit der SCHEMABINDING-Klausel erstellten Sicht sind, können erst dann gelöscht werden, wenn die entsprechende Sicht gelöscht oder geändert wird, sodass die Schemabindung nicht mehr vorhanden ist. Andernfalls löst Microsoft SQL Server 2005-Datenbankmodul einen Fehler aus. Darüber hinaus schlägt die Ausführung von ALTER TABLE-Anweisungen für Tabellen fehl, die Bestandteil von Sichten mit Schemabindung sind, falls diese Anweisungen die Sichtdefinition betreffen.
SCHEMABINDING kann nicht angegeben werden, wenn die Sicht Spalten mit Aliasdatentypen enthält.
VIEW_METADATA
Gibt an, dass die SQL Server-Instanz die Metadateninformationen der Sicht anstelle der Basistabelle oder -tabellen an die DB-Library-, ODBC- und OLE DB-APIs zurückgibt, wenn Metadaten des Durchsuchenmodus für eine Abfrage angefordert werden, die auf die Sicht verweist. Metadaten des Durchsuchenmodus sind zusätzliche Metadaten, die von der Datenbankmodul-Instanz an die clientbasierten DB-Library-, ODBC- und OLE DB-APIs zurückgegeben werden. Mithilfe dieser Metadaten können die clientbasierten APIs aktualisierbare clientbasierte Cursor implementieren. Metadaten des Durchsuchenmodus enthalten Informationen zu der Basistabelle, zu der die Spalten im Resultset gehören.Bei Sichten, die mithilfe von VIEW_METADATA erstellt wurden, geben die Metadaten des Durchsuchenmodus den Sichtnamen anstelle der Basistabellennamen zurück, wenn Spalten aus der Sicht im Resultset beschrieben werden.
Wenn eine Sicht mithilfe von WITH VIEW_METADATA erstellt wurde, sind alle enthaltenen Spalten (außer der timestamp-Spalte) aktualisierbar, falls die Sicht INSERT- oder UPDATE INSTEAD OF-Trigger besitzt. Weitere Informationen finden Sie im Abschnitt mit den Hinweisen unter CREATE VIEW (Transact-SQL).
- AS
Die Aktionen, die die Sicht ausführen soll.
- select_statement
Die SELECT-Anweisung, die die Sicht definiert.
- WITH CHECK OPTION
Erzwingt, dass alle Datenänderungsanweisungen, die für die Sicht ausgeführt werden, den Kriterien folgen müssen, die durch select_statement festgelegt wurden.
Hinweise
Weitere Informationen zu ALTER VIEW finden Sie in den Hinweisen unter CREATE VIEW (Transact-SQL).
Hinweis: |
---|
Wenn die vorherige Sichtdefinition mithilfe von WITH ENCRYPTION oder CHECK OPTION erstellt wurde, sind diese Optionen nur dann aktiviert, wenn sie in der ALTER VIEW-Anweisung enthalten sind. |
Wird eine derzeit verwendete Sicht mithilfe von ALTER VIEW geändert, belegt Datenbankmodul die Sicht mit einer exklusiven Schemasperre. Wenn die Sperre erteilt wird und keine aktiven Benutzer der Sicht vorhanden sind, löscht Datenbankmodul alle Kopien der Sicht aus dem Prozedurcache. Vorhandene Pläne, die auf die Sicht verweisen, bleiben im Cache, werden aber beim Aufrufen erneut kompiliert.
ALTER VIEW kann auf indizierte Sichten angewendet werden; ALTER VIEW löscht jedoch vorbehaltlos alle Indizes in der Sicht.
Berechtigungen
Für die Ausführung von ALTER VIEW wird zumindest die ALTER-Berechtigung für OBJECT benötigt.
Beispiele
Im folgenden Beispiel wird eine Sicht mit allen Mitarbeitern und deren Anstellungsdaten mit der Bezeichnung EmployeeHireDate
erstellt. Die Berechtigungen werden der Sicht erteilt, doch werden die Anforderungen geändert, sodass Mitarbeiter ausgewählt werden, deren Anstellungsdatum vor einem bestimmten Datum liegt. Dann wird die Sicht mithilfe von ALTER VIEW
ersetzt.
USE AdventureWorks ;
GO
CREATE VIEW HumanResources.EmployeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Contact AS c
ON e.ContactID = c.ContactID ;
GO
Die Sicht muss geändert werden, damit nur die Mitarbeiter enthalten sind, die vor 1997
eingestellt wurden. Wird ALTER VIEW nicht verwendet, sondern die Sicht gelöscht und erneut erstellt, müssen die zuvor verwendete GRANT-Anweisung sowie alle anderen Anweisungen im Zusammenhang mit Berechtigungen für diese Sicht erneut eingegeben werden.
ALTER VIEW HumanResources.EmployeeHireDate
AS
SELECT c.FirstName, c.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
WHERE HireDate < CONVERT(DATETIME,'19980101',101) ;
GO
Siehe auch
Verweis
CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Andere Ressourcen
Erstellen von gespeicherten Prozeduren (Datenbankmodul)
Verwenden von Bezeichnern als Objektnamen
Vornehmen von Schemaänderungen in Publikationsdatenbanken