database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 3206 게시물 읽기
No. 3206
오라클의 all_triggers 에 해당 하는 명령어가 어떻게 되나요?
작성자
julia
작성일
2006-12-21 04:22
조회수
2,666

ms-sql 사용하는데요.


데이터베이스 안에 있는 모든 테이블의 트리거와 index 등록상태를 알고 싶어서요.

어떻게 하면 되는지요...


조언 부탁드립니다.^^

이 글에 대한 댓글이 총 2건 있습니다.

SELECT
 NAME TRIGGER_NAME
 , OBJECT_NAME(PARENT_OBJ) TABLE_NAME
 , CASE OBJECTPROPERTY(ID,'EXECISTRIGGERDISABLED') WHEN 0 THEN 'ENABLED' ELSE 'DISABLED' END STATUS 
FROM SYSOBJECTS
WHERE TYPE ='TR'
GO

IF OBJECT_ID('INDEXVIEW','V') IS NOT NULL
DROP VIEW INDEXVIEW
GO

CREATE VIEW DBO.INDEXVIEW

AS
/****************************************************************************************************
** Creation Date: ?
** Modif Date   : Nov. 27, 2002
** Created By   : avigneau
** Database     : any
** Description  : Reports on all indexes and / or heaps on user tables within a database
** Parameters   : none
** Compatibility: SQL Server 6.X, 7.0, 2000
** Remark       : System tables are used to be compatible with version 6.x.
        But I believe it would still be difficult to obtain the same results
                  using INFORMATION_SCHEMA views and new object and system property functions.
** Example      : SELECT 'Showing All Indexes' AS Comments, I.*
        FROM dbo.INDEXVIEW I
        SELECT 'Showing Tables with Missing Clustered index' AS Comments, I.*
        FROM dbo.INDEXVIEW I
        WHERE ClusterType = 'HEAP'
      SELECT 'Showing Tables with Missing Primary Keys' AS Comments,  I.*
        FROM dbo.INDEXVIEW I
         LEFT OUTER JOIN dbo.INDEXVIEW I2
          ON I.TableID = I2.TableID AND I2.UniqueType = 'PRIMARY KEY'
        WHERE I2.TableID IS NULL  
      SELECT 'Showing Possible Redundant Index keys' AS Comments,  I.*
        FROM dbo.INDEXVIEW I
         JOIN dbo.INDEXVIEW I2
          ON I.TableID = I2.TableID AND I.ColName1 = I2.ColName1
          AND I.IndexName <> I2.IndexName
      SELECT 'Showing Possible Reverse Index keys' AS Comments,  I.*
       FROM dbo.INDEXVIEW I
        JOIN dbo.INDEXVIEW I2
         ON I.TableID = I2.TableID AND I.ColName1 = I2.ColName2
         AND I.ColName2 = I2.ColName1 AND I.IndexName <> I2.IndexName
************************************************************************************************/

SELECT o.id AS TableID ,u.name Owner,o.name TableName,
  i.Indid AS IndexID
  , CASE i.name
   WHEN o.name THEN '** NONE **'
  ELSE i.name END AS IndexName,
       CASE i.indid
   WHEN 1 THEN 'CLUSTERED'
   WHEN 0 THEN 'HEAP'
  ELSE 'NONCLUSTERED' END AS ClusterType,
  CASE
     WHEN (i.status & 2048) > 0 THEN 'PRIMARY KEY'
   WHEN (i.status & (2|4096)) > 0 THEN 'UNIQUE'
  ELSE '' END AS UniqueType,
    CASE      
   WHEN (i.status & (2048)) > 0
     OR ((i.status & (4096)) > 0 )
    THEN 'CONSTRAINT'
   WHEN i.indid = 0 THEN ' '
  ELSE 'INDEX' END AS IndexType,
-- This following part is non essential
-- It is a pre char aggregate I use in other scripts
-- to generate create and drop scripts
  CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 1) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 1) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 2) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,2) END +
  CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 3) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,3) END +
    CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 4) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,4) END +
  CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 5) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,5) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 6) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,6) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 7) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 7) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 8) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,8) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 9) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,9) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 10) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,10) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 11) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,11) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 12) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,12) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 13) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,13) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 14) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,14) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 15) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,15) END +
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 16) IS NULL THEN ''
  ELSE ', '+INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,16) END AS AllColName,
--
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 1) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,1) END  AS ColName1,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 2) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,2) END AS ColName2,
  CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 3) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,3) END AS ColName3,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 4) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,4) END AS ColName4,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 5) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,5) END AS ColName5,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 6) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,6) END AS ColName6,
      CASE      
   WHEN INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid, 7) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,7) END AS ColName7,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 8) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,8) END AS ColName8,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 9) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,9) END AS ColName9,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 10) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,10) END AS ColName10,
    CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 11) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,11) END AS ColName11,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 12) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,12) END AS ColName12,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 13) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,13) END AS ColName13,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 14) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,14) END AS ColName14,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 15) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME (o.name), i.indid,15) END AS ColName15,
      CASE      
   WHEN INDEX_COL(u.name+'.'+ QUOTENAME(o.name), i.indid, 16) IS NULL THEN ''
  ELSE INDEX_COL(u.name+'.'+QUOTENAME(o.name), i.indid,16) END AS ColName16
 FROM sysobjects o (NOLOCK)
 LEFT OUTER JOIN sysindexes i (NOLOCK)
  ON o.id = i.id
   JOIN sysusers u (NOLOCK)
  ON o.uid = u.uid
 WHERE o.type = 'U' AND i.indid < 255
 AND o.name NOT IN ('dtproperties')
 AND i.name NOT LIKE '_WA_Sys_%'
-- because of SQL Server 7.0

GO

SELECT 'Showing All Indexes' AS Comments, I.*
 FROM dbo.INDEXVIEW I
GO
SELECT 'Showing Tables with Missing Clustered index' AS Comments, I.*
 FROM dbo.INDEXVIEW I
 WHERE ClusterType = 'HEAP'
GO
SELECT 'Showing Tables with Missing Primary Keys' AS Comments,  I.*
 FROM dbo.INDEXVIEW I
 LEFT OUTER JOIN dbo.INDEXVIEW I2
  ON I.TableID = I2.TableID
  AND I2.UniqueType = 'PRIMARY KEY'
 WHERE I2.TableID IS NULL
GO
SELECT 'Showing Possible Redundant Index keys' AS Comments ,  I.*
 FROM dbo.INDEXVIEW I
 JOIN dbo.INDEXVIEW I2
  ON I.TableID = I2.TableID
  AND I.ColName1 = I2.ColName1
  AND I.IndexName <> I2.IndexName
 ORDER BY I.TableName,I.IndexName
GO
SELECT 'Showing Possible Reverse Index keys' AS Comments ,  I.*
 FROM dbo.INDEXVIEW I
 JOIN dbo.INDEXVIEW I2
  ON I.TableID = I2.TableID
  AND I.ColName1 = I2.ColName2
  AND I.ColName2 = I2.ColName1
  AND I.IndexName <> I2.IndexName
GO

 

석이님이 2006-12-23 16:43에 작성한 댓글입니다. Edit

감사합니다. ^^

julia님이 2007-01-03 23:55에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
3214사용자 등록하는 방법좀 알려주세요....ㅠ.ㅠ. [1]
db초보
2006-12-22
2822
3213sql2005 프로시져 문의드립니다.
조박사
2006-12-21
2118
3207쿼리질문입니다 [1]
종길
2006-12-21
1799
3206오라클의 all_triggers 에 해당 하는 명령어가 어떻게 되나요? [2]
julia
2006-12-21
2666
3205고수님들의 의견을...
도움청한자
2006-12-21
1984
3204mySql 트렌젝션 문제
오성지
2006-12-20
1962
3203ASP 에서 SP 연동할때... [1]
2006-12-20
2302
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다