2009-12-29 2 views

답변

1

이 작업을 수행하는 방법이 TSQL에서없는 것 같습니다. sys.databases 카탈로그 뷰에서 특성으로 캡처되지 않으며 대부분의 다른 가능성 (예 : DBCC)에서는 작업하기 위해 데이터베이스가 온라인이어야합니다.

그러나 정보는 이벤트 로그에 캡처됩니다 (날짜/시간 스탬프 포함). 따라서 "데이터베이스 MyDatabase에 대해 데이터베이스 옵션을 OFFLINE으로 설정"과 같은 설명과 함께 MSSQLSERVER에서 이벤트를 볼 수 있습니다.

0

기본 추적을 사용하도록 설정하면 운이 좋을 수 있습니다. 아래 코드를 사용해 보시고 저에게 알려주십시오. 이 코드는 데이터베이스를 오프라인으로 만드는 것이 아니라 데이터베이스를 수정 한 모든 레코드를 보여줍니다.

 
DECLARE @FileName VARCHAR(MAX)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
gt.EventClass, e.name as EventName, gt.TextData, gt.ObjectID, gt.ObjectName, gt.DatabaseName, gt.SessionLoginName, gt.StartTime, gt.ApplicationName, gt.HostName, gt.NTUserName, gt.NTDomainName FROM sys.fn_trace_gettable(@FileName, DEFAULT) AS gt JOIN sys.trace_events e ON gt.EventClass = e.trace_event_id WHERE gt.EventClass = 164 -- Object Altered Event AND ObjectType = 16964 -- Database Object

+0

기본 추적 실행이 없습니다. – Manjot

0

임의의 생각을 다음 DB 엔진이 오프라인으로 사용되기 때문에, 파일 날짜/시간 스탬프가 변경 될 수 있습니다.

ALTER DATABASE에서 데이터베이스는 폐쇄 완전히 종료하고 오프라인으로 표시됩니다. 오프라인 상태에서 데이터베이스를 수정할 수 없습니다.

이 아이디어를 테스트 할 수 없습니다. 죄송합니다.

편집 : SQL Server 2000에서

문서화되지 않은 xp_getfiledetails이있는 is not in SQL Server 2005.

예전에는 DBA로 사용하여 파일 타임 스탬프를 아주 깨끗하게 읽었습니다. DTS 사용을 피하고 t-SQL에서 할 수있는만큼 유지하십시오.

+0

파일 시스템 날짜/시간은 변경 될 수 있지만 SQL에서는 반영되지 않습니다. 껍질을 벗기고 그렇게 할 수 있을지도 모릅니다. – GalacticCowboy

0

데이터베이스 파일의 마지막 수정 데이터/시간을 확인하십시오. 파일이 다른 도구에 의해 사용되지 않았다면 이것은 아이디어를 줄 수 있습니다.

관련 문제