programing

SQL Server 2005 데이터베이스의 모든 보기를 나열하는 SQL 쿼리

bestprogram 2023. 6. 26. 21:30

SQL Server 2005 데이터베이스의 모든 보기를 나열하는 SQL 쿼리

SQL Server 2005의 특정 데이터베이스에 대한 모든 보기(보기 이름만 필요)를 열거하려면 SQL 쿼리가 필요합니다.

(이미 제안된 내용으로) 세트오프를 완료하는 방법

SELECT * FROM sys.views

이렇게 하면 sys.objects(모든 유형의 개체에 공통적인 속성을 포함) 또는 INFORMATION_SCHEMA에서 사용할 수 없는 각 뷰에 대한 추가 속성이 제공됩니다.보기. INFORMATION_SCHEMA 접근 방식은 기본적으로 보기 정의를 제공합니다.

SELECT SCHEMA_NAME(schema_id) AS schema_name
,name AS view_name
,OBJECTPROPERTYEX(OBJECT_ID,'IsIndexed') AS IsIndexed
,OBJECTPROPERTYEX(OBJECT_ID,'IsIndexable') AS IsIndexable
FROM sys.views
SELECT  *
FROM    sys.objects
WHERE   type = 'V'

여기서 데이터베이스 이름 추가를 실행합니다.

  SELECT TABLE_NAME, ROW_NUMBER() OVER(ORDER BY TABLE_NAME) AS 'RowNumber' 
  FROM INFORMATION_SCHEMA.VIEWS 
  WHERE TABLE_CATALOG = 'DatabaseName'

또는 조건을 추가하여 사용할 위치를 제거합니다.

  use DataBaseName

  SELECT TABLE_NAME, ROW_NUMBER() OVER(ORDER BY TABLE_NAME) AS 'RowNumber' 
  FROM INFORMATION_SCHEMA.VIEWS 
select v.name
from INFORMATION_SCHEMA.VIEWS iv
join sys.views v on v.name = iv.Table_Name
where iv.Table_Catalog = 'Your database name'

액세스해야 할 때가 있습니다.schema이름. 예를 들어 스키마로 액세스해야 하는 AdventureWorks 데이터베이스를 사용하고 있습니다.

 SELECT s.name +'.'+v.name FROM sys.views v inner join sys.schemas s on s.schema_id = v.schema_id 

네크로맨싱.

당신이 모든 견해를 말했기 때문에, 엄밀히 말하면, 현재까지의 모든 대답은 틀렸습니다.
모든 보기를 가져오는 방법은 다음과 같습니다.

SELECT 
     sch.name AS view_schema 
    ,sysv.name AS view_name 
    ,ISNULL(sysm.definition, syssm.definition) AS view_definition 
    ,create_date 
    ,modify_date 
FROM sys.all_views AS sysv 

INNER JOIN sys.schemas AS sch 
    ON sch.schema_id = sysv.schema_id 

LEFT JOIN sys.sql_modules AS sysm 
    ON sysm.object_id = sysv.object_id 

LEFT JOIN sys.system_sql_modules AS syssm 
    ON syssm.object_id = sysv.object_id 

-- INNER JOIN sys.objects AS syso ON syso.object_id = sysv.object_id 

WHERE (1=1) 
AND (sysv.type = 'V') -- seems unnecessary, but who knows
-- AND sch.name = 'INFORMATION_SCHEMA' 
/*
AND sysv.is_ms_shipped = 0  
AND NOT EXISTS 
(
    SELECT * FROM sys.extended_properties AS syscrap
    WHERE syscrap.major_id = sysv.object_id
    AND syscrap.minor_id = 0 
    AND syscrap.class = 1 
    AND syscrap.name = N'microsoft_database_tools_support' 
)  
*/

ORDER BY 
     view_schema 
    ,view_name 

이것은 오래된 것이지만, 저는 제가 가지고 있는 모든 뷰에서 모든 SQL 코드를 얻을 수 있는 쿼리를 찾을 수 없었기 때문에 어쨌든 이것을 내놓아야겠다고 생각했습니다.자, 여기 있습니다.

  SELECT SM.definition
  FROM sys.sql_modules SM
  INNER JOIN sys.Objects SO ON SM.Object_id = SO.Object_id
  WHERE SO.type = 'v'

언급URL : https://stackoverflow.com/questions/2903262/sql-query-to-list-all-views-in-an-sql-server-2005-database