특정 스키마에서 모든 뷰를 삭제하는 방법.특정 스키마에서 모든 뷰 삭제 - SQL
예 : 만약 내가 db의 뷰 아래에 있다면.
[dbo].[view1]
[dbo].[veiw2]
[dbo].[view3]
[myView].[view1]
[myView].[veiw2]
[myView].[view3]
모든 뷰를 한 번에 하나씩 myView 스키마 아래에 놓기 만하면됩니다.
특정 스키마에서 모든 뷰를 삭제하는 방법.특정 스키마에서 모든 뷰 삭제 - SQL
예 : 만약 내가 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)
감사 작동 AlSher. sc.name = [myView]를 sc.name = 'myView'로 바 꾸었습니다. – Sreedhar
@Nev_Rahd : 일반적으로 구분해야하는 이름이 깨지므로주의해야합니다. 그래서, 안전을 위해서'sc.name'과'obj.name'을 각각'QUOTENAME (sc.name)'과'QUOTENAME (obj.name)'으로 대체하십시오. –
@AndriyM : 네가 맞아. – Sreedhar