特定のスキーマの下にあるすべてのビューを削除する方法。
例: db で以下のビューを取得した場合。
[dbo].[view1]
[dbo].[veiw2]
[dbo].[view3]
[myView].[view1]
[myView].[veiw2]
[myView].[view3]
一度にすべてのビューをスキーマ myView の下にドロップしたいだけです。
特定のスキーマの下にあるすべてのビューを削除する方法。
例: db で以下のビューを取得した場合。
[dbo].[view1]
[dbo].[veiw2]
[dbo].[view3]
[myView].[view1]
[myView].[veiw2]
[myView].[view3]
一度にすべてのビューをスキーマ myView の下にドロップしたいだけです。
これを試して:
select 'drop view ' + QUOTENAME(sc.name) + '.' + QUOTENAME(obj.name) + ';'
from sys.objects obj
INNER JOIN sys.schemas sc
ON sc.schema_id = obj.schema_id
where obj.type='V'
and sc.name = 'myView';
これは、スキーマを考慮し、システム テーブルを使用して、実行可能な変数に出力します。この方法では、Select および Print ステートメントは返される可能性のある長さに制限があるため、Select がスクリプトを切り捨てるという問題はありません。
以下は SQL Server 2008 で実行されます。
DECLARE @DropViewCommand nVarChar(MAX) = ''
SELECT @DropViewCommand = @DropViewCommand
+ 'DROP VIEW '+ QUOTENAME(S.Name) + '.' + QUOTENAME(V.name) + '; '
FROM sys.views as V
JOIN sys.schemas as S
ON S.schema_id = V.schema_id
WHERE S.name = 'dbo'--Selectively delete by Schema. Comment out to delete all views.
PRINT @DropViewCommand--See the command used in dropping all views (will be truncated in Select/Print, but not when Executing).
EXEC (@DropViewCommand)