適用対象: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

以前に作成されたビューを変更します。Modifies a previously created view. これにはインデックス付きビューが含まれます。This includes an indexed view. ALTER VIEW は、従属するストアド プロシージャやトリガーに影響を与えず、権限を変更することもありません。ALTER VIEW does not affect dependent stored procedures or triggers and does not change permissions.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


ALTER VIEW [ schema_name . ] view_name [ ( column [ ,...n ] ) ]   
[ WITH <view_attribute> [ ,...n ] ]   
AS select_statement   
<view_attribute> ::=   
    [ ENCRYPTION ]  
    [ VIEW_METADATA ]       


ビューが所属するスキーマの名前を指定します。Is the name of the schema to which the view belongs.

変更するビューを指定します。Is the view to change.

指定したビューに含まれている列の名前を 1 つ以上指定します。列を複数指定するときは、コンマで区切ります。Is the name of one or more columns, separated by commas, that are to be part of the specified view.


列の権限は、ALTER VIEW の実行の前後で列の名前が変わらないときだけ維持されます。Column permissions are maintained only when columns have the same name before and after ALTER VIEW is performed.


ビューの列では、基底となるデータのソースにかかわらず、列名に対する権限は、CREATE VIEW ステートメントまたは ALTER VIEW ステートメントを超えて適用されます。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. たとえば、CREATE VIEW ステートメントで SalesOrderID 列に対して権限が与えられる場合、ALTER VIEW ステートメントは SalesOrderID 列の名前を OrderRef などに変更でき、その後も 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.

適用対象: SQL Server 2008SQL Server 2008 以降と Azure SQL データベースAzure SQL DatabaseApplies to: SQL Server 2008SQL Server 2008 and later and Azure SQL データベースAzure SQL Database.

ALTER VIEW ステートメントのテキストを含んでいる sys.syscomments のエントリを暗号化します。Encrypts the entries in sys.syscomments that contain the text of the ALTER VIEW statement. WITH ENCRYPTION を指定すると、そのビューを SQL Server レプリケーションの一部としてパブリッシュできなくなります。WITH ENCRYPTION prevents the view from being published as part of SQL Server replication.

基になるテーブルのスキーマにビューをバインドします。Binds the view to the schema of the underlying table or tables. SCHEMABINDING を指定すると、ビュー定義に影響する変更をベース テーブルに加えられなくなります。When SCHEMABINDING is specified, the base tables cannot be modified in a way that would affect the view definition. まずビュー定義を変更または削除して、変更するテーブルとの依存関係を解消する必要があります。The view definition itself must first be modified or dropped to remove dependencies on the table to be modified. SCHEMABINDING を使用する場合は、select_statement に、参照されるテーブル、ビュー、またはユーザー定義関数の名前として、2 つの部分から構成される名前 (schema . object) を指定する必要があります。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. 参照されるオブジェクトは、すべて同じデータベース内にあることが必要です。All referenced objects must be in the same database.

SCHEMABINDING 句を指定して作成されたビューが削除または変更されて、スキーマ バインドがなくならない限り、そのビューに参加しているビューまたはテーブルは削除できません。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. スキーマ バインドが残っている場合は、データベース エンジンDatabase Engineからエラーが返されます。Otherwise, the データベース エンジンDatabase Engine raises an error. また、ビュー定義に影響を与える ALTER TABLE ステートメントを、スキーマ バインドを持つビューに参加しているテーブルに対して実行すると、ステートメントは失敗します。Also, executing ALTER TABLE statements on tables that participate in views that have schema binding fail if these statements affect the view definition.

ビューを参照するクエリ用にブラウズ モード メタデータが要求されている場合、SQL ServerSQL Server インスタンスは、DB-Library、ODBC、および OLE DB API に対して、ベース テーブルではなくビューに関するメタデータ情報を返します。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. ブラウズ モード メタデータとは、データベース エンジンDatabase Engineのインスタンスがクライアント側の DB-Library、ODBC、および OLE DB API に返す追加のメタデータです。Browse-mode metadata is additional metadata that the instance of データベース エンジンDatabase Engine returns to the client-side DB-Library, ODBC, and OLE DB APIs. クライアント側 API ではこのメタデータによって、更新可能なクライアント側カーソルを実装できます。This metadata enables the client-side APIs to implement updatable client-side cursors. ブラウズ モード メタデータには、結果セット内の列が属するベース テーブルの情報が含まれています。Browse-mode metadata includes information about the base table that the columns in the result set belong to.

VIEW_METADATA で作成したビューの場合、ブラウズ モード メタデータでは結果セット内のビューの列の説明で、ベース テーブル名ではなくビュー名が返されます。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.

WITH VIEW_METADATA を指定して作成されたビューに INSERT または UPDATE での INSTEAD OF トリガーが含まれている場合、そのビューでは、timestamp 列を除くすべての列を更新できます。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. 詳しくは、「CREATE VIEW (Transact-SQL)」の「解説」セクションをご覧ください。For more information, see the Remarks section in CREATE VIEW (Transact-SQL).

ビューが行うアクションです。Are the actions the view is to take.

ビューを定義している SELECT ステートメントを指定します。Is the SELECT statement that defines the view.

ビューに対して実行されるすべてのデータ変更ステートメントについて、select_statement 内で設定される条件に従うよう強制します。Forces all data modification statements that are executed against the view to follow the criteria set within select_statement.


ALTER VIEW について詳しくは、「CREATE VIEW (Transact-SQL)」の「解説」をご覧ください。For more information about ALTER VIEW, see Remarks in CREATE VIEW (Transact-SQL).


以前のビュー定義が WITH ENCRYPTION または CHECK OPTION を使用して作成されている場合、これらのオプションは、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.

現在使用されているビューを ALTER VIEW を使用して変更する場合、 データベース エンジンDatabase Engine はビューに対して排他スキーマ ロックを設定します。If a view currently used is modified by using ALTER VIEW, the データベース エンジンDatabase Engine takes an exclusive schema lock on the view. ロックが許可され、ビューのアクティブ ユーザーがいなくなると、 データベース エンジンDatabase Engine はプロシージャ キャッシュからビューのすべてのコピーを削除します。When the lock is granted, and there are no active users of the view, the データベース エンジンDatabase Engine deletes all copies of the view from the procedure cache. ビューを参照している既存のプランはキャッシュに残りますが、呼び出されると再コンパイルされます。Existing plans referencing the view remain in the cache but are recompiled when invoked.

ALTER VIEW は、インデックス付きビューに適用できますが、そのビューのすべてのインデックスを無条件で削除します。ALTER VIEW can be applied to indexed views; however, ALTER VIEW unconditionally drops all indexes on the view.


ALTER VIEW を実行するには、少なくとも OBJECT に対する ALTER 権限が必要です。To execute ALTER VIEW, at a minimum, ALTER permission on OBJECT is required.


次の例では、すべての従業員とその雇用日を含んだ EmployeeHireDate というビューを作成します。The following example creates a view that contains all employees and their hire dates called EmployeeHireDate. ビューには権限が与えられますが、必要条件が変更されて、雇用日が特定の日付よりも古い従業員を選択することになりました。Permissions are granted to the view, but requirements are changed to select employees whose hire dates fall before a certain date. そこで、ALTER VIEW を使用してビューを変更します。Then, ALTER VIEW is used to replace the view.

USE AdventureWorks2012 ;  
CREATE VIEW HumanResources.EmployeeHireDate  
SELECT p.FirstName, p.LastName, e.HireDate  
FROM HumanResources.Employee AS e JOIN Person.Person AS  p  
ON e.BusinessEntityID = p.BusinessEntityID ;  

2002 年より前に雇用された従業員のみを含むようにビューを変更する必要があります。The view must be changed to include only the employees that were hired before 2002. ALTER VIEW を使用せずに、ビューを削除して再作成する場合は、以前に使用されていた GRANT ステートメント、およびこのビューに関係する権限を処理するその他すべてのステートメントを再入力する必要があります。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  
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) ;  

参照See Also

DROP VIEW (Transact-SQL) DROP VIEW (Transact-SQL)
ストアド プロシージャの作成 Create a Stored Procedure
SELECT (Transact-SQL) SELECT (Transact-SQL)
パブリケーション データベースでのスキーマの変更Make Schema Changes on Publication Databases