ALTER VIEW (Transact-SQL)ALTER VIEW (Transact-SQL)

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Ändert eine zuvor erstellte Sicht.Modifies a previously created view. Darunter fallen auch indizierte Sichten.This includes an indexed view. ALTER VIEW wirkt sich nicht auf abhängige gespeicherte Prozeduren oder Trigger aus und ändert keine Berechtigungen.ALTER VIEW does not affect dependent stored procedures or triggers and does not change permissions.

Themenlinksymbol Transact-SQL Syntax Conventions (Transact-SQL-Syntaxkonventionen)Topic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ] [ ; ]  

<view_attribute> ::=   
{   
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]       
}   

ArgumenteArguments

schema_nameschema_name
Ist der Name des Schemas, zu dem die Sicht gehört.Is the name of the schema to which the view belongs.

view_nameview_name
Die zu ändernde Sicht.Is the view to change.

Spaltecolumn
Ist der Name von einer oder von mehreren, durch Trennzeichen voneinander getrennten Spalten, die Teil der angegebenen Sicht sein sollen.Is the name of one or more columns, separated by commas, that are to be part of the specified view.

Wichtig

Spaltenberechtigungen bleiben nur erhalten, wenn die Spalten vor und nach der Ausführung von ALTER VIEW den gleichen Namen haben.Column permissions are maintained only when columns have the same name before and after ALTER VIEW is performed.

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.In the columns for the view, the permissions for a column name apply across a CREATE VIEW or ALTER VIEW statement, regardless of the source of the underlying data. Angenommen, Berechtigungen für die SalesOrderID Spalte in einer CREATE VIEW-Anweisung, eine ALTER VIEW-Anweisung kann Umbenennen der SalesOrderID -Spalte beispielsweise im Vergleich zu OrderRef, und die Ansicht mit zugeordneten Berechtigungen haben weiterhin SalesOrderID.For example, if permissions are granted on the SalesOrderID column in a CREATE VIEW statement, an ALTER VIEW statement can rename the SalesOrderID column, such as to OrderRef, and still have the permissions associated with the view using SalesOrderID.

ENCRYPTIONENCRYPTION
Gilt für: SQL Server 2008SQL Server 2008 über SQL Server 2017SQL Server 2017 und Azure SQL-DatenbankAzure SQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017 and Azure SQL-DatenbankAzure SQL Database.

Verschlüsselt die Einträge in sys.syscomments , die den Text der ALTER VIEW-Anweisung enthalten.Encrypts the entries in sys.syscomments that contain the text of the ALTER VIEW statement. Mithilfe von WITH ENCRYPTION kann verhindert werden, dass die Sicht als Teil der SQL Server-Replikation veröffentlicht wird.WITH ENCRYPTION prevents the view from being published as part of SQL Server replication.

SCHEMABINDINGSCHEMABINDING
Bindet die Sicht an das Schema der zugrunde liegenden Basistabellen.Binds the view to the schema of the underlying table or tables. Wird SCHEMABINDING angegeben, ist es nicht möglich, Änderungen der Basistabellen auszuführen, die sich auf die Sichtdefinition auswirken würden.When SCHEMABINDING is specified, the base tables cannot be modified in a way that would affect the view definition. Die Sichtdefinition muss zuerst geändert oder gelöscht werden, um Abhängigkeiten von der zu ändernden Tabelle zu entfernen.The view definition itself must first be modified or dropped to remove dependencies on the table to be modified. Wenn Sie SCHEMABINDING verwenden die Select_statement umfasst die mit dem zweiteiligen Namen (Schema. Objekt) von Tabellen, Sichten oder benutzerdefinierten Funktionen, auf die verwiesen werden.When you use SCHEMABINDING, the select_statement must include the two-part names (schema.object) of tables, views, or user-defined functions that are referenced. Alle Objekte, auf die verwiesen wird, müssen in derselben Datenbank vorhanden sein.All referenced objects must be in the same database.

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.Views or tables that participate in a view created with the SCHEMABINDING clause cannot be dropped, unless that view is dropped or changed so that it no longer has schema binding. Andernfalls löst DatenbankmodulDatabase Engine einen Fehler aus.Otherwise, the DatenbankmodulDatabase Engine raises an error. 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.Also, executing ALTER TABLE statements on tables that participate in views that have schema binding fail if these statements affect the view definition.

VIEW_METADATAVIEW_METADATA
Gibt an, dass die Instanz von SQL ServerSQL 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.Specifies that the instance of SQL ServerSQL Server will return to the DB-Library, ODBC, and OLE DB APIs the metadata information about the view, instead of the base table or tables, when browse-mode metadata is being requested for a query that references the view. Metadaten des Durchsuchenmodus sind zusätzliche Metadaten, die von der DatenbankmodulDatabase Engine-Instanz an die clientbasierten DB-Library-, ODBC- und OLE DB-APIs zurückgegeben werden.Browse-mode metadata is additional metadata that the instance of DatenbankmodulDatabase Engine returns to the client-side DB-Library, ODBC, and OLE DB APIs. Mithilfe dieser Metadaten können die clientbasierten APIs aktualisierbare clientbasierte Cursors implementieren.This metadata enables the client-side APIs to implement updatable client-side cursors. Metadaten des Durchsuchenmodus enthalten Informationen zu der Basistabelle, zu der die Spalten im Resultset gehören.Browse-mode metadata includes information about the base table that the columns in the result set belong to.

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.For views created with VIEW_METADATA, the browse-mode metadata returns the view name and not the base table names when it describes columns from the view in the result set.

Wenn eine Sicht erstellt wird, mithilfe von WITH VIEW_METADATA alle enthaltenen Spalten außer einem Zeitstempel Spalte, aktualisierbar, falls die Sicht INSERT- oder UPDATE INSTEAD OF-Trigger sind.When a view is created by using WITH VIEW_METADATA, all its columns, except a timestamp column, are updatable if the view has INSERT or UPDATE INSTEAD OF triggers. Weitere Informationen finden Sie im Abschnitt "Hinweise" in CREATE VIEW ( Transact-SQL ) .For more information, see the Remarks section in CREATE VIEW (Transact-SQL).

ASAS
Die Aktionen, die die Sicht ausführen soll.Are the actions the view is to take.

select_statementselect_statement
Die SELECT-Anweisung, die die Sicht definiert.Is the SELECT statement that defines the view.

WITH CHECK OPTIONWITH CHECK OPTION
Erzwingt, dass alle datenänderungsanweisungen, die ausgeführt werden, für die Sicht, die innerhalb von festgelegten Kriterien folgen Select_statement.Forces all data modification statements that are executed against the view to follow the criteria set within select_statement.

HinweiseRemarks

Weitere Informationen zu ALTER VIEW finden Sie unter "Hinweise" in CREATE VIEW ( Transact-SQL ) .For more information about ALTER VIEW, see Remarks in 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.If the previous view definition was created by using WITH ENCRYPTION or CHECK OPTION, these options are enabled only if they are included in ALTER VIEW.

Wird eine derzeit verwendete Sicht mithilfe von ALTER VIEW geändert, belegt DatenbankmodulDatabase Engine die Sicht mit einer exklusiven Schemasperre.If a view currently used is modified by using ALTER VIEW, the DatenbankmodulDatabase Engine takes an exclusive schema lock on the view. Wenn die Sperre erteilt wird und keine aktiven Benutzer der Sicht vorhanden sind, löscht DatenbankmodulDatabase Engine alle Kopien der Sicht aus dem Prozedurcache.When the lock is granted, and there are no active users of the view, the DatenbankmodulDatabase Engine deletes all copies of the view from the procedure cache. Vorhandene Pläne, die auf die Sicht verweisen, bleiben im Cache, werden aber beim Aufrufen erneut kompiliert.Existing plans referencing the view remain in the cache but are recompiled when invoked.

ALTER VIEW kann auf indizierte Sichten angewendet werden; ALTER VIEW löscht jedoch vorbehaltlos alle Indizes in der Sicht.ALTER VIEW can be applied to indexed views; however, ALTER VIEW unconditionally drops all indexes on the view.

BerechtigungenPermissions

Für die Ausführung von ALTER VIEW wird zumindest die ALTER-Berechtigung für OBJECT benötigt.To execute ALTER VIEW, at a minimum, ALTER permission on OBJECT is required.

BeispieleExamples

Im folgenden Beispiel wird eine Sicht mit allen Mitarbeitern und deren Anstellungsdaten mit der Bezeichnung EmployeeHireDate erstellt.The following example creates a view that contains all employees and their hire dates called EmployeeHireDate. Die Berechtigungen werden der Sicht erteilt, doch die Anforderungen werden geändert, sodass Mitarbeiter ausgewählt werden, deren Anstellungsdatum vor einem bestimmten Datum liegt.Permissions are granted to the view, but requirements are changed to select employees whose hire dates fall before a certain date. Dann wird die Sicht mithilfe von ALTER VIEW ersetzt.Then, ALTER VIEW is used to replace the view.

USE AdventureWorks2012 ;  
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.The view must be changed to include only the employees that were hired before 2002. 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.If ALTER VIEW is not used, but instead the view is dropped and re-created, the previously used GRANT statement and any other statements that deal with permissions pertaining to this view must be re-entered.

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  

Siehe auchSee Also

CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
CREATE VIEW (Transact-SQL) CREATE VIEW (Transact-SQL)
DROP VIEW ( Transact-SQL ) DROP VIEW (Transact-SQL)
Erstellen einer gespeicherten Prozedur Create a Stored Procedure
SELECT (Transact-SQL) SELECT (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Vornehmen von Schemaänderungen in VeröffentlichungsdatenbankenMake Schema Changes on Publication Databases