ALTER VIEW (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Ä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.
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 ]
}
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
ALTER VIEW [ schema_name . ] view_name [ ( column_name [ ,...n ] ) ]
AS <select_statement>
[;]
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 Trennzeichen 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
Gilt für: SQL Server 2008 (10.0.x) und höher sowie Azure SQL-Datenbank.
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, Sicht oder benutzerdefinierten Funktionen einschließen, auf die verwiesen wird. Alle Objekte, auf die verwiesen wird, müssen in derselben Datenbank vorhanden sein.
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 Datenbank-Engine 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.
VIEW_METADATA
Gibt an, dass die Instanz von SQL Server die Metadateninformationen der Sicht anstelle der Basistabelle(n) 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 für den Durchsuchenmodus sind zusätzliche Metadaten, die von der Instanz der Datenbank-Engine an die clientbasierten DB-Library-, ODBC- und OLE DB-APIs zurückgegeben werden. Mithilfe dieser Metadaten können die clientbasierten APIs aktualisierbare clientbasierte Cursors implementieren. Metadaten des Durchsuchenmodus enthalten Informationen zu der Basistabelle, zu der die Spalten im Resultset gehören.
Bei Sichten, die mit 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 „Hinweise“ in 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 für die Sicht ausgeführten Datenänderungsanweisungen den Kriterien entsprechen müssen, die innerhalb von select_statement festgelegt wurden.
Hinweise
Weitere Informationen zu ALTER VIEW finden Sie im Abschnitt „Hinweise“ 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 Datenbank-Engine die Sicht mit einer exklusiven Schemasperre. Wenn die Sperre erteilt wird und keine aktiven Benutzer*innen der Sicht vorhanden sind, löscht die Datenbank-Engine 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 die Anforderungen werden geändert, sodass Mitarbeiter ausgewählt werden, deren Anstellungsdatum vor einem bestimmten Datum liegt. Dann wird die Sicht mithilfe von ALTER VIEW
ersetzt.
USE AdventureWorks2022;
GO
CREATE VIEW HumanResources.EmployeeHireDate
AS
SELECT p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID ;
GO
Die Sicht muss geändert werden, damit nur die Mitarbeiter enthalten sind, die vor 2002
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 p.FirstName, p.LastName, e.HireDate
FROM HumanResources.Employee AS e JOIN Person.Person AS p
ON e.BusinessEntityID = p.BusinessEntityID
WHERE HireDate < CONVERT(DATETIME,'20020101',101) ;
GO
Weitere Informationen
CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL)
DROP VIEW (Transact-SQL)
Erstellen einer gespeicherten Prozedur
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken