2012-08-04 3 views
0

사용자 정보를 저장하기 위해 데이터베이스를 생성 중이며 사용자가 변경 한 내용을 기록해야합니다.MS DateTime 전용 LOG 테이블

이것은 결국 일종의 '타임 라인'으로 이어 지므로 날짜/시간 요소가 중요합니다.

이 질문에 대해 나는 다음과 같은 예를 사용합니다

:

ID - int 
#memID - int 
dateNameChanged - DateTime 
dateBioChanged - DateTime 
dateStatusStringChanged - DateTime 

이 좋은가요 : 이제

#ID - int 
memName - string 
memBio - string 
memStatusString - string 

, 내 생각과 같은 테이블에 그것을 연결하는 것입니다 정보를 기록하는 방법? 나중에 쉽게 나열 할 수 있도록 다른 테이블에서이 작업을 수행하려고합니다.

또한 로그 날짜가 변경된 이후에만 동일한 테이블에 로깅을 넣지 않습니다. 사용자가 절대로 변경하지 않으면 공간이 낭비됩니다.

결론적으로;

더 좋은 방법이 있나요?

업데이트 : 정보 부족에 사과드립니다. SQL Server 2008, asp net C# 3.5 - 4 (atm 데이터베이스 구조 만 수행)를 사용하고 있습니다.

또한, 회원으로, 로그 파일에 저장해야합니다 같은 tblMemberInformation, tblClanInformation, tblMemberGameRank

각 테이블에서 변경된 데이터 (그냥 확인합니다) 각각의 서로 다른 테이블을해야합니다 해당 날짜.

+0

어떤 SQL Server 버전을 사용하고 있습니까? – Oded

+0

변경된 사항이있을 때만 기록 하시겠습니까? 변경된 값이 아닙니다 (즉,'bioChangedFrom')? – Oded

+0

변경된 항목과 -> to에서 변경된 항목 모두를 기록해야합니다. [user changed name to derp] - 03 5 월 2012 – TheGeekZn

답변

1

사용중인 SQL Server 버전을 지정하지 않았으므로 최신 버전을 사용합니다. audit 내장되어 2008+

SQL 서버 :

감사 SQL Server 데이터베이스 엔진의 인스턴스 또는 개별 데이터베이스는 데이터베이스 엔진에서 발생하는 추적 및 로깅 이벤트를 포함한다. SQL Server 감사를 사용하면 서버 수준 이벤트에 대한 서버 감사 사양과 데이터베이스 수준 이벤트에 대한 데이터베이스 감사 사양을 포함 할 수있는 서버 감사를 만들 수 있습니다. 감사 이벤트는 이벤트 로그 또는 감사 파일에 기록 될 수 있습니다.

+0

감사합니다. 정보를 읽었지만 읽을 수있는 한 감사 기능은 개별 테이블이 아닌 데이터베이스에서만 작동합니다. 또한 모든 변경 사항이 아니라 선택 변경 사항 만 추적하면됩니다. : D – TheGeekZn

+0

@NewAmbition - 나는 당신이 틀렸다고 생각합니다. 감사 할 테이블을 지정할 수 있습니다. [여기] (http://msdn.microsoft.com/en-us/library/dd392015.aspx)를 참조하십시오. – Oded

+0

감사 기능 프로세스를 볼 수 있습니다. 고마워요. 나는 DBA가 아니며 지금까지 감사 기능에 대해 들어 본 적이 없다. (다시 한번 감사한다.) 디스크에있는 별도의 감사 파일에 기록 된 것을 볼 수있다. 프로그래밍 데이를 통해 DB에 실제로 읽기/쓰기 만하는 것을 배웠습니다. – TheGeekZn