2012-05-21 3 views
0

특정 스키마에서 모든 뷰를 삭제하는 방법.특정 스키마에서 모든 뷰 삭제 - SQL

예 : 만약 내가 db의 뷰 아래에 있다면.

[dbo].[view1] 
[dbo].[veiw2] 
[dbo].[view3] 
[myView].[view1] 
[myView].[veiw2] 
[myView].[view3] 

모든 뷰를 한 번에 하나씩 myView 스키마 아래에 놓기 만하면됩니다.

답변

1

이 시도 :

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'; 
+0

감사 작동 AlSher. sc.name = [myView]를 sc.name = 'myView'로 바 꾸었습니다. – Sreedhar

+0

@Nev_Rahd : 일반적으로 구분해야하는 이름이 깨지므로주의해야합니다. 그래서, 안전을 위해서'sc.name'과'obj.name'을 각각'QUOTENAME (sc.name)'과'QUOTENAME (obj.name)'으로 대체하십시오. –

+0

@AndriyM : 네가 맞아. – Sreedhar

0

이 후 실행될 수있는 변수 계정 스키마 고려한 시스템 테이블을 사용하고, 출력한다. 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) 
관련 문제