2012-05-31 2 views
1

SQL Server 2005에서 테이블에 행을 삽입 한 날짜 + 시간을 찾을 수 있습니까?테이블에 행을 삽입 한 날짜

SQL Server 로그 삽입 명령이 있습니까? 나는 테이블을 만들 때마다

+0

왜 당신의 테이블에 자신의 'DateTime' 열이 기록되어 있지 않습니까? –

+0

아니요.이 날짜 + 시간을 추적하는 테이블에 'DateTime' 열이 없으면이 방법을 찾을 수 없습니다. –

+1

다른 답변을 참조하십시오. http://stackoverflow.com/questions/10720486/date-timestamp-to-record-when-a-record-was-added-to-the-table http://stackoverflow.com/ 질문/7349288/last-updated-column-in-a-sql-server-2008-r2-table을 추가하는 방법 - 기본적으로 행을 삽입 할 때 신뢰할 수있는 방법을 원할 경우 기본값 인 CURRENT_TIMESTAMP로 새 datetime 열을 추가하십시오. –

답변

3

, 나는 항상 곁에 다음과 같은 두 개의 열을 포함한다 :이 여분의 공간의 비트를 사용하지만

CreatedBy varchar(255) default system_name, 
CreatedAt datetime default getdate() 

를, I는 정보가 시간이 지남에 매우 유용 증명하는 것으로 나타났습니다.

귀하의 질문은 로그에 관한 것입니다. 대답은 "예"입니다. 그러나 정보를 얻을 수 있는지 여부는 복구 모드에 따라 다릅니다. 단순한 경우 레코드는 다음 트랜잭션을 위해 겹쳐 쓰여집니다. 벌크 또는 가득 차 있다면, 정보는 최소한 마지막 증분 백업 이후의 로그에 있습니다.

+2

로그를 읽음으로써 행이 삽입 된시기를 찾는 방법을 설명 할 수 있습니까? –

+0

@AaronBertrand +1 –

1

테이블에 가장 쉽게 접근 할 수있는 InsertDate 기본 getdate() 열을 가질 수 있습니다. SQL Server 2008에서

당신은

변경 데이터 캡처 레코드를 삽입 테이블 업데이트에 변경된 데이터를 제어하고 는 SQL Server 테이블에 적용되는 활동을 삭제 CDC를 사용할 수 있습니다. 이로 인해 쉽게 변경된 관계형 형식으로 변경 사항의 세부 사항을 사용할 수 있습니다. 열 정보 및 대상 환경에 변경 내용을 적용하는 데 필요한 메타 데이터는 수정 된 행에 대해 캡처되고 테이블의 추적 된 원본 테이블의 열 구조를 미러링하는 변경 테이블에 저장됩니다. 테이블 값 함수는 소비자가 변경 한 데이터에 체계적으로 액세스 할 수 있도록 제공됩니다.

+0

그래, 찾았 어.그러나 Sql Server 2005에서는 CDC를 사용할 수 없습니까? –

+0

아니오, 방금 언급 했으므로 방금 언급했습니다. 나는 "SQl Server 2008에서"라고 말했습니다. :) – Diego

+0

대단히 감사합니다. –

2

cdc 생성 함수를 사용하여 실제 데이터 레코드를 가져 오는 한 삽입 날짜를 도출 할 수 있습니다. 당신은 날짜에 로그 시퀀스 번호를 변환하는 기능 sys.fn_cdc_map_lsn_to_time 내장 CDC를 사용할 수 있습니다

DECLARE @from_lsn binary(10), @to_lsn binary(10);       

SET @from_lsn=sys.fn_cdc_get_min_lsn ('name_of_your_cdc_instance_on_cdc_table'); 
SET @to_lsn=sys.fn_cdc_get_max_lsn(); 

SELECT * FROM 
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table 
(
    @from_lsn, 
    @to_lsn, 
    N'all' 
); 

:

그래서 예를 들어, 당신은 뭔가를 끌어합니다. 아래 사용법 :

SELECT sys.fn_cdc_map_lsn_to_time(__$start_lsn),* FROM 
cdc.fn_cdc_get_net_changes_name_of_your_cdc_instance_on_cdc_table 
(
    @from_lsn, 
    @to_lsn, 
    N'all' 
); 
관련 문제