SQL Serverでビューが存在するかどうかを確認する方法
SQL Server でビューが存在するかどうかを確認する方法
sys.views
カタログ ビューには、すべてのビューに関する情報が格納されています。このビューを使用して、ビューの名前、スキーマ、所有者などの情報を確認できます。
SELECT *
FROM sys.views
WHERE name = '<ビュー名>'
AND schema = '<スキーマ名>';
上記のクエリは、<ビュー名>
という名前のビューが <スキーマ名>
スキーマに存在するかどうかを確認します。クエリが結果を返した場合、ビューは存在します。結果が返されない場合、ビューは存在しません。
INFORMATION_SCHEMA.VIEWS
ビューは、sys.views
ビューと似ていますが、こちらはすべてのデータベースの情報を含んでいます。このビューを使用して、ビューの名前、スキーマ、所有者、定義などの情報を確認できます。
SELECT *
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_NAME = '<ビュー名>'
AND SCHEMA_NAME = '<スキーマ名>';
sp_view_exists
システム プロシージャは、ビューが存在するかどうかを確認するために使用できます。このプロシージャは、ビューの名前とスキーマ名を引数として受け取り、ビューが存在する場合は 1 を返し、存在しない場合は 0 を返します。
EXEC sp_view_exists '<ビュー名>', '<スキーマ名>';
補足
- 上記のいずれの方法でも、ビューが存在するかどうかを確認できます。
sys.views
カタログ ビューは、SQL Server のすべてのバージョンで使用できます。INFORMATION_SCHEMA.VIEWS
ビューは、SQL Server 2000 以降で使用できます。sp_view_exists
システム プロシージャは、SQL Server 7.0 以降で使用できます。
例
AdventureWorks データベースで、Production.ProductCategories
スキーマ内に ProductCategoriesView
という名前のビューが存在するかどうかを確認するには、以下のいずれかのクエリを使用できます。
-- sys.views カタログ ビューを使用する
SELECT *
FROM sys.views
WHERE name = 'ProductCategoriesView'
AND schema = 'Production.ProductCategories';
-- INFORMATION_SCHEMA.VIEWS ビューを使用する
SELECT *
FROM INFORMATION_SCHEMA.VIEWS
WHERE VIEW_NAME = 'ProductCategoriesView'
AND SCHEMA_NAME = 'Production.ProductCategories';
-- sp_view_exists システム プロシージャを使用する
EXEC sp_view_exists 'ProductCategoriesView', 'Production.ProductCategories';
これらのクエリはいずれも結果を返すため、ProductCategoriesView
ビューは存在します。
サンプルコード:SQL Server でビューが存在するかどうかを確認する
-- AdventureWorks データベースを対象とする
USE AdventureWorks;
-- 'Production.ProductCategories' スキーマ内に 'ProductCategoriesView' という名前のビューが存在するかどうかを確認する
SELECT *
FROM sys.views
WHERE name = 'ProductCategoriesView'
AND schema = 'Production.ProductCategories';
このコードを実行すると、次のいずれかの結果が返されます。
- ビューが存在する場合:ビューに関する情報を含む結果セットが返されます。
- ビューが存在しない場合:空の結果セットが返されます。
他の方法
上記のコードは、sys.views
カタログ ビューを使用してビューの存在を確認する方法を示したものです。
他に以下の方法もあります。
INFORMATION_SCHEMA.VIEWS
ビューを使用するsp_view_exists
システム プロシージャを使用する
これらの方法の詳細については、上記の回答を参照してください。
SQL Server でビューが存在するかどうかを確認するその他の方法
SQL Server Management Studio (SSMS) を使用する
SSMS を使用して、ビューが存在するかどうかを簡単に確認できます。以下の手順を実行します。
- SSMS で、ビューが存在するデータベースに接続します。
- オブジェクト エクスプローラーで、データベース > ビュー に移動します。
- ビューを右クリックし、プロパティ を選択します。
- 全般 ページで、名前 プロパティを確認します。
ビューの名前が目的の名前と一致すれば、ビューは存在します。
以下のデータベース スクリプトを使用して、ビューが存在するかどうかを確認できます。
DECLARE @viewName NVARCHAR(128) = '<ビュー名>';
DECLARE @schemaName NVARCHAR(128) = '<スキーマ名>';
SELECT 1
FROM sys.views
WHERE name = @viewName
AND schema = @schemaName;
PowerShell を使用する
Get-View -DatabaseName '<データベース名>' -SchemaName '<スキーマ名>' -Name '<ビュー名>'
このコマンドレットを実行すると、ビューが存在する場合はビューに関する情報を含むオブジェクトが返されます。ビューが存在しない場合は、何も返されません。
SSMS を使用する
- SSMS で、AdventureWorks データベースに接続します。
ProductCategoriesView
ビューを右クリックし、プロパティ を選択します。
データベース スクリプトを使用する
DECLARE @viewName NVARCHAR(128) = 'ProductCategoriesView';
DECLARE @schemaName NVARCHAR(128) = 'Production.ProductCategories';
SELECT 1
FROM sys.views
WHERE name = @viewName
AND schema = @schemaName;
Get-View -DatabaseName AdventureWorks -SchemaName Production.ProductCategories -Name ProductCategoriesView
このコマンドレットを実行すると、ProductCategoriesView
ビューに関する情報を含むオブジェクトが返されるため、ビューは存在します。
SQL Server でビューが存在するかどうかを確認するには、さまざまな方法があります。
- 上記の方法は、SQL Server 2000 以降で使用できます。
- ビューが存在するかどうかを確認する前に、そのビューに対するアクセス許可を持っていることを確認してください。
sql sql-server database