2016-10-11 2 views
0

에서 새/삭제 테이블 확인 : 나는 데이터베이스에 현재 테이블을 식별하는 스크립트의 시작을프로세스 I 스크립트 밖으로 T-SQL 사용하여 다음과 같은 생각 할 수있는 방법이 있나요 데이터베이스

보고, 아래 각각의 행 수, :

SELECT o.name AS 'TableName' ,i.rows AS 'Records' 
    FROM sys.tables as o LEFT JOIN sys.sysindexes as i 
    ON i.id = o.object_id 
    WHERE o.type IN ('U') 
    AND i.indid in (0,1) 

하지만 어디 플래그까지 (종류의 오늘 대 어제 같은) 데이터베이스에 나타나는 새 테이블 수있는 뭔가를 설정하고 싶습니다 - 또한, 하나를 그 최근에 삭제되었습니다. 거의 '테이블 로그 기록'으로 작동합니다.

따라서 최종 출력은 모든 현재 테이블 + 새 + 삭제 된 어제의 목록이됩니다.

미리 환호하십시오.

+0

[나쁜 습관 : 오래된 스타일의 조인 사용] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style- ANSI - ** 92 ** SQL 표준 (** 20 년 이상 **)에서 * * ​​ANSI'JOIN' 구문으로 구식 * * 쉼표로 구분 된 테이블 목록이 대체되었습니다.) –

+1

또한 SQL Server ** 2005 **에서 ** sysobjects 뷰 사용을 중단해야합니다. - sys와 같이 sys 스키마에서 집중된 카탈로그 뷰를 사용하십시오. 테이블'또는'sys.types' –

+0

당신은 – TheGameiswar

답변

0

테이블을 만들거나 수정할 때 sys.objects에서 확인할 수 있지만 (create_date, modified_date) 삭제 된 테이블의 관점에서 벗어난 것 같습니다.

이러한 종류의 감사는 DDL triggers으로 처리하는 것이 가장 좋습니다. dbo.ddl_change_log과 같은 테이블을 만들고 DDL 트리거로 채울 수 있습니다.

관련 문제