데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

마지막 백업 시간 및 DBCC 확인

 

  • Version : SQL Server 2005, 2008, 2008R2, 2012

 

SQL Server에서 최근 마지막 백업은 언제일까? 마지막으로 성공한 DBCC는 언제일까? 아마 대부분의 DBA들은 백업 파일을 이름(날짜로 이름이 생성되어 있는 경우) 또는 파일의 생성날짜로 백업 시간을 알아 낼 것이다.

 

다음 스크립트를 사용하여 현재 생성되어 있는 데이터베이스의 마지막 백업 날짜 및 DBCC 날짜를 확인하여보자.

SET NOCOUNT ON

GO

 

USE master

GO

 

-- Trace flag to make DBCC Page command results available in the current connection

 

DBCC TRACEON(3604)

GO

 

CREATE TABLE #DBCC_table (

ParentObject nvarchar(4000) null,

Object nvarchar(4000) null,

Field nvarchar(4000) null,

VALUE nvarchar(4000) null

)

 

CREATE TABLE #LastDBCC_table (

[Database Name] nvarchar(4000) null,

[Last Known Good DBCC] nvarchar(4000) null

)

 

DECLARE @cmd varchar(4000)

DECLARE @DB_NAME nvarchar(500)

DECLARE @DB_ID int

DECLARE LastDBCC_cursor CURSOR FOR

 

SELECT name, [dbid] FROM sysdatabases

ORDER BY dbid

 

 

OPEN LastDBCC_cursor

-- Perform the first fetch.

FETCH NEXT FROM LastDBCC_cursor into @DB_NAME, @DB_ID

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.

 

    WHILE @@FETCH_STATUS = 0

    BEGIN

        -- This is executed as long as the previous fetch succeeds.

        SET @cmd = 'dbcc page('+ convert(varchar,@DB_ID)+',1,9,3) with tableresults'

        insert into #DBCC_table execute (@cmd)

        insert into #LastDBCC_table

        select distinct @DB_NAME, VALUE from #DBCC_table where Field = 'dbi_dbccLastKnownGood'

 

             if @@ROWCOUNT = 0

                    insert into [#LastDBCC_table] select @DB_NAME, 'Not implemented'

 

        FETCH NEXT FROM LastDBCC_cursor into @DB_NAME, @DB_ID

 

        delete #DBCC_table

    END

 

CLOSE LastDBCC_cursor

 

DEALLOCATE LastDBCC_cursor

 

 

select

    T1.[Database Name],

    CASE

    WHEN (max(T1.[Last Known Good DBCC]) = '1900-01-01 00:00:00.000') then 'Not Yet Ran'

    ELSE max(T1.[Last Known Good DBCC]) END as [Last Known Good DBCC],

    --max(T1.[Last Known Good DBCC]) as [Last Known Good DBCC],

    COALESCE(convert(varchar(50),MAX(T2.backup_finish_date),21),'Not Yet Taken') AS [Last BackUp Taken]

from #LastDBCC_table T1 LEFT OUTER JOIN msdb.dbo.backupset T2

    ON T2.database_name = T1.[Database Name]

GROUP BY T1.[Database Name]

ORDER BY T1.[Database Name]

 

DROP TABLE #LastDBCC_table

DROP TABLE #DBCC_table

 

DBCC traceoff(3604)

GO

 

 

 

[참고자료]

http://blogs.msdn.com/b/sql_pfe_blog/archive/2010/02/09/last-known-good-backup-dbcc.aspx

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
1890 장기 트랜잭션 확인 및 경고 설정 jevida(강성욱) 2016.10.11 1422
1889 SQL 데이터 수집툴 DiagManager 사용법 jevida(강성욱) 2016.10.11 1319
1888 Windows Server 2012 R2 그룹 관리 서비스 계정 및 SQL 서버 jevida(강성욱) 2016.10.11 1833
1887 Kerbros 구성 관리자 툴 jevida(강성욱) 2016.10.11 1160
1886 SQL Server Geography 및 Geometory 데이터 형식 jevida(강성욱) 2016.10.11 2372
1885 SQL Server를 이용한 신용카드 보안 -조직이 PCI DSS 준수를 달성 하기 위한 요건 jevida(강성욱) 2016.10.11 1363
1884 TDE 암호화 사용하기 jevida(강성욱) 2016.10.11 3280
1883 SQL Server 암호화 하기 jevida(강성욱) 2016.10.11 2731
1882 의도하지 않은 분산트랜잭션 사용 jevida(강성욱) 2016.10.11 877
1881 Affinity I/O Mask jevida(강성욱) 2016.10.11 1165
1880 LPE_BATCH 스핀락 jevida(강성욱) 2016.10.11 882
1879 SQL Server 17953 오류 jevida(강성욱) 2016.10.11 982
1878 SQL 연결 18056 오류 jevida(강성욱) 2016.10.11 1361
1877 SQL 2008 R2 Sp1 적용과 9013 오류 - 포맷 섹터 크기에 따른 오류 jevida(강성욱) 2016.10.11 1802
1876 JDBC 로깅 파일 위치 설정 jevida(강성욱) 2016.10.11 958
1875 NUMA Node 메모리 블록 jevida(강성욱) 2016.10.11 1046
1874 AppDomain unloading 오류 로그 – CLR 오류 jevida(강성욱) 2016.10.11 1187
1873 SQL Server IO and Latch 설명 jevida(강성욱) 2016.10.11 3153
» 마지막 백업 시간 및 DBCC 확인 [1] jevida(강성욱) 2016.10.08 1591
1871 DMV를 활용한 CPU 트러블슈팅 - Sys.dm_exec_query_stats, sys.dm_os_ring_buffers 활용 [1] jevida(강성욱) 2016.10.08 1907





XE Login