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

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure sìAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Modifica una vista creata in precedenza.Modifies a previously created view. È possibile utilizzare questa istruzione anche per le viste indicizzate.This includes an indexed view. ALTER VIEW non influisce sulle stored procedure o i trigger dipendenti e non comporta modifiche delle autorizzazioni.ALTER VIEW does not affect dependent stored procedures or triggers and does not change permissions.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
[ WITH CHECK OPTION ] [ ; ]  
  
<view_attribute> ::=   
{   
    [ ENCRYPTION ]  
    [ SCHEMABINDING ]  
    [ VIEW_METADATA ]       
}   

ArgomentiArguments

schema_nameschema_name
Nome dello schema a cui appartiene la vista.Is the name of the schema to which the view belongs.

view_nameview_name
Vista da modificare.Is the view to change.

columncolumn
Nome o elenco di nomi delimitato da virgole delle colonne che si desidera includere nella vista specificata.Is the name of one or more columns, separated by commas, that are to be part of the specified view.

Importante

Le autorizzazioni di colonna vengono mantenute solo se il nome delle colonne rimane uguale prima e dopo l'esecuzione dell'istruzione ALTER VIEW.Column permissions are maintained only when columns have the same name before and after ALTER VIEW is performed.

Nota

Nelle colonne di una vista, le autorizzazioni assegnate per un nome di colonna rimangono valide tra istruzioni CREATE VIEW e ALTER VIEW, indipendentemente dall'origine dei dati sottostanti.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. Se ad esempio si concedono autorizzazioni per la colonna SalesOrderID con un'istruzione CREATE VIEW, è possibile usare un'istruzione ALTER VIEW per rinominare la colonna SalesOrderID, ad esempio come OrderRef, e mantenere comunque le autorizzazioni associate alla vista che usa la colonna 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
Si applica a : da SQL Server 2008SQL Server 2008 fino a SQL ServerSQL Server e Database SQL di AzureAzure SQL Database.Applies to: SQL Server 2008SQL Server 2008 through SQL ServerSQL Server and Database SQL di AzureAzure SQL Database.

Crittografa le voci nella tabella sys.syscomments contenenti il testo dell'istruzione ALTER VIEW.Encrypts the entries in sys.syscomments that contain the text of the ALTER VIEW statement. Se si utilizza WITH ENCRYPTION, la vista non viene pubblicata nell'ambito della replica di SQL Server.WITH ENCRYPTION prevents the view from being published as part of SQL Server replication.

SCHEMABINDINGSCHEMABINDING
Associa la vista allo schema della tabella o delle tabelle sottostanti.Binds the view to the schema of the underlying table or tables. Se si specifica SCHEMABINDING non è possibile apportare modifiche alle tabelle di base, che influiscono sulla definizione della vista.When SCHEMABINDING is specified, the base tables cannot be modified in a way that would affect the view definition. In questi casi, è necessario modificare o eliminare la definizione della vista per rimuovere le dipendenze dalla tabella da modificare.The view definition itself must first be modified or dropped to remove dependencies on the table to be modified. Quando si usa SCHEMABINDING, l'argomento select_statement deve includere i nomi composti da due parti (schema . object) delle tabelle, delle visualizzazioni o delle funzioni definite dall'utente a cui viene fatto riferimento.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. Tutti gli oggetti a cui viene fatto riferimento devono essere presenti nello stesso database.All referenced objects must be in the same database.

Le viste o tabelle che fanno parte di una vista creata con la clausola SCHEMABINDING non possono essere eliminate, a meno che tale vista non venga eliminata o modificata in modo che non sia più associata a uno schema.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. In caso contrario, nel Motore di databaseDatabase Engine viene generato un errore.Otherwise, the Motore di databaseDatabase Engine raises an error. Inoltre, le istruzioni ALTER TABLE eseguite su tabelle che fanno parte di viste associate a schema hanno esito negativo se modificano la definizione della vista.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
Specifica che l'istanza di SQL ServerSQL Server dovrà restituire alle API DB-Library, ODBC e OLE DB le informazioni sui metadati relativi alla vista anziché alla tabella o alle tabelle di base quando vengono richiesti metadati in modalità browse per una query che fa riferimento alla vista.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. I metadati in modalità browse sono metadati aggiuntivi restituiti dall'istanza di Motore di databaseDatabase Engine alle API DB-Library, ODBC e OLE DB sul lato client.Browse-mode metadata is additional metadata that the instance of Motore di databaseDatabase Engine returns to the client-side DB-Library, ODBC, and OLE DB APIs. Questi metadati consentono alle API sul lato client di implementare cursori sul lato client aggiornabili.This metadata enables the client-side APIs to implement updatable client-side cursors. I metadati in modalità browse includono informazioni sulla tabella di base a cui appartengono le colonne del set di risultati.Browse-mode metadata includes information about the base table that the columns in the result set belong to.

Per le viste create con VIEW_METADATA, i metadati in modalità browse restituiscono il nome della vista anziché i nomi delle tabelle di base nella descrizione delle colonne della vista nel set di risultati.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.

Quando si crea una vista con l'opzione VIEW_METADATA, tutte le relative colonne, tranne una colonna timestamp, risultano aggiornabili se la vista include trigger INSERT o UPDATE INSTEAD OF.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. Per altre informazioni, vedere la sezione Osservazioni in CREATE VIEW (Transact-SQL).For more information, see the Remarks section in CREATE VIEW (Transact-SQL).

ASAS
Azioni che la vista deve eseguire.Are the actions the view is to take.

select_statementselect_statement
Istruzione SELECT che definisce la vista.Is the SELECT statement that defines the view.

WITH CHECK OPTIONWITH CHECK OPTION
Forza il rispetto del set di criteri specificato in select_statement per tutte le istruzioni di modifica dei dati eseguite sulla vista.Forces all data modification statements that are executed against the view to follow the criteria set within select_statement.

RemarksRemarks

Per altre informazioni su ALTER VIEW, vedere la sezione Osservazioni in CREATE VIEW (Transact-SQL).For more information about ALTER VIEW, see Remarks in CREATE VIEW (Transact-SQL).

Nota

Se la definizione precedente della vista è stata creata con WITH ENCRYPTION o CHECK OPTION, queste opzioni vengono abilitate solo se sono incluse nell'istruzione ALTER VIEW.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.

Se si modifica una vista in uso con ALTER VIEW, nel Motore di databaseDatabase Engine viene accettato un blocco di schema esclusivo sulla vista.If a view currently used is modified by using ALTER VIEW, the Motore di databaseDatabase Engine takes an exclusive schema lock on the view. Quando viene concesso il blocco e non esistono utenti attivi della vista, Motore di databaseDatabase Engine elimina tutte le copie della vista dalla cache delle procedure.When the lock is granted, and there are no active users of the view, the Motore di databaseDatabase Engine deletes all copies of the view from the procedure cache. I piani esistenti che fanno riferimento alla vista rimangono nella cache, ma vengono ricompilati per chiamate successive.Existing plans referencing the view remain in the cache but are recompiled when invoked.

È possibile utilizzare ALTER VIEW per viste indicizzate. Tuttavia, in questo caso vengono eliminati tutti gli indici nella vista, senza eccezioni.ALTER VIEW can be applied to indexed views; however, ALTER VIEW unconditionally drops all indexes on the view.

AutorizzazioniPermissions

Per eseguire ALTER VIEW, è richiesta come minimo l'autorizzazione ALTER per OBJECT.To execute ALTER VIEW, at a minimum, ALTER permission on OBJECT is required.

EsempiExamples

Nell'esempio seguente viene creata una vista contenente tutti i dipendenti e le relative date di assunzione, denominata EmployeeHireDate.The following example creates a view that contains all employees and their hire dates called EmployeeHireDate. Vengono concesse autorizzazioni alla vista, ma è richiesta una modifica dei requisiti per selezionare i dipendenti con date di assunzione precedenti alla data specificata.Permissions are granted to the view, but requirements are changed to select employees whose hire dates fall before a certain date. La vista viene quindi sostituita tramite l'istruzione ALTER VIEW.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  
  

È necessario modificare la vista per includere solo i dipendenti assunti prima del 2002.The view must be changed to include only the employees that were hired before 2002. Se non si utilizza ALTER VIEW, ma si elimina e ricrea la vista, sarà necessario specificare nuovamente l'istruzione GRANT utilizzata in precedenza e qualsiasi altra istruzione correlata alle autorizzazioni per questa vista.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  
  

Vedere ancheSee 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)
Creazione di una stored procedure Create a Stored Procedure
SELECT (Transact-SQL) SELECT (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Apportare modifiche allo schema nei database di pubblicazioneMake Schema Changes on Publication Databases