Delen via


ALTER VIEW (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Wijzigt een eerder aangemaakt weergave. Dit omvat een geïndexeerd beeld. ALTER VIEW beïnvloedt geen afhankelijke opgeslagen procedures of triggers en verandert geen permissies.

Transact-SQL syntaxis-conventies

Syntaxis

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>   
[;]  

Arguments

schema_name
Is de naam van het schema waartoe de weergave behoort.

view_name
Is de visie om te veranderen.

kolom
Is de naam van één of meer kolommen, gescheiden door komma's, die deel uitmaken van de gespecificeerde weergave.

Belangrijk

Kolomrechten worden alleen behouden wanneer kolommen dezelfde naam hebben vóór en na het uitvoeren van ALTER VIEW.

Opmerking

In de kolommen voor de view gelden de permissies voor een kolomnaam over een CREATE VIEW- of ALTER VIEW-instructie, ongeacht de bron van de onderliggende data. Als bijvoorbeeld permissies worden verleend in de SalesOrderID-kolom in een CREATE VIEW-instructie, kan een ALTER VIEW-instructie de SalesOrderID-kolom hernoemen, bijvoorbeeld naar OrderRef, en toch de rechten behouden die aan de weergave gekoppeld zijn met SalesOrderID.

CODERING
Van toepassing op: SQL Server 2008 (10.0.x) en later en Azure SQL Database.

Versleutelt de vermeldingen in sys.syscomments die de tekst van de ALTER VIEW-instructie bevatten. WITH ENCRYPTION voorkomt dat de view wordt gepubliceerd als onderdeel van SQL Server-replicatie.

SCHEMABINDING
Bindt de weergave aan het schema van de onderliggende tabel of tabellen. Wanneer SCHEMABINDING wordt gespecificeerd, kunnen de basistabellen niet worden aangepast op een manier die de weergavedefinitie beïnvloedt. De weergavedefinitie zelf moet eerst worden aangepast of verwijderd om afhankelijkheden van de te wijzigen tabel te verwijderen. Wanneer je SCHEMABINDING gebruikt, moet de select_statement de tweedelige namen (schema.object) van tabellen, weergaven of door de gebruiker gedefinieerde functies die worden verwezen. Alle gerefereerde objecten moeten in dezelfde database staan.

Views of tabellen die deelnemen aan een view die is gemaakt met de SCHEMABINDING-clausule kunnen niet worden verwijderd, tenzij die view wordt verwijderd of gewijzigd zodat deze geen schemabinding meer heeft. Anders geeft de Database Engine een foutmelding. Ook faalt het uitvoeren van ALTER TABLE-statements op tabellen die deelnemen aan views met schema-binding als deze statements de viewdefinitie beïnvloeden.

VIEW_METADATA
Specificeert dat de instantie van SQL Server de metadata-informatie over de view teruggeeft aan de DB-Library, ODBC en OLE DB API's, in plaats van de basistabel of tabellen, wanneer browse-mode metadata wordt opgevraagd voor een query die naar de view verwijst. Browse-mode metadata is aanvullende metadata die de instantie van Database Engine terugstuurt naar de client-side DB-bibliotheek, ODBC en OLE DB API's. Deze metadata stelt de client-side API's in staat om updateerbare client-side cursors te implementeren. Browse-mode metadata bevat informatie over de basistabel waartoe de kolommen in de resultaatset behoren.

Voor weergaven die met VIEW_METADATA zijn gemaakt, geeft de browse-mode metadata de weergavenaam terug en niet de basistabelnamen wanneer het kolommen uit de view in de resultaatset beschrijft.

Wanneer een weergave wordt aangemaakt met WITH VIEW_METADATA, zijn alle kolommen, behalve een tijdstempelkolom , updateerbaar als de weergave in plaats van triggers INSERT of UPDATE heeft. Voor meer informatie, zie de sectie Opmerkingen in CREATE VIEW (Transact-SQL).

ALS
Zijn de acties die het standpunt moet ondernemen?

select_statement
Is de SELECT-instructie die de weergave definieert.

MET DE CHECKOPTIE
Dwingt alle datawijzigingsverklaringen die worden uitgevoerd tegen de view om de criteria te volgen die in select_statement zijn vastgesteld.

Opmerkingen

Voor meer informatie over ALTER VIEW, zie Opmerkingen in CREATE VIEW (Transact-SQL).

Opmerking

Als de vorige weergavedefinitie is gemaakt met WITH ENCRYPTION of CHECK OPTION, zijn deze opties alleen ingeschakeld als ze zijn opgenomen in ALTER VIEW.

Als een weergave die momenteel wordt gebruikt, wordt gewijzigd met ALTER VIEW, heeft de database-engine een exclusieve schemavergrendeling voor de weergave. Wanneer de vergrendeling wordt verleend en er geen actieve gebruikers van de weergave zijn, verwijdert de database-engine alle kopieën van de weergave uit de procedurecache. Bestaande plannen die verwijzen naar de weergave blijven in de cache staan, maar worden opnieuw gecompileerd wanneer ze worden aangeroepen.

ALTER VIEW kan worden toegepast op geïndexeerde weergaven; ALTER VIEW verwijdert echter voorwaardelijke alle indexen in de weergave.

Permissions

Als u ALTER VIEW wilt uitvoeren, is minimaal ALTER-machtiging voor OBJECT vereist.

Voorbeelden

Het volgende voorbeeld creëert een weergave die alle medewerkers en hun aanstellingsdata bevat, genaamd EmployeeHireDate. Er worden toestemming verleend voor de view, maar de vereisten worden aangepast om werknemers te selecteren van wie de aanstellingsdata vóór een bepaalde datum vallen. Vervolgens ALTER VIEW wordt gebruikt om het beeld te vervangen.

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  

De visie moet worden aangepast zodat alleen de werknemers worden opgenomen die eerder 2002zijn aangenomen. Als ALTER VIEW niet wordt gebruikt, maar de view wordt verwijderd en opnieuw aangemaakt, moeten de eerder gebruikte GRANT-instructie en alle andere statements die betrekking hebben op permissies voor deze view opnieuw worden ingevoerd.

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  

Zie ook

MAAK TABEL AAN (Transact-SQL)
WEERGAVE MAKEN (Transact-SQL)
DROP-WEERGAVE (Transact-SQL)
Een opgeslagen procedure maken
SELECT (Transact-SQL)
EVENTDATA (Transact-SQL)
Verander het schema in publicatiedatabases