2010-01-18 2 views
1

간소화 된 데이터베이스 타이머 기반 폴링을 구성하기 위해 모든 데이터베이스 테이블을 업데이트 할 때마다 SQL Server 2008 데이터베이스의 타임 스탬프 필드를 업데이트해야합니다 (폴링, 값 읽기, 프런트 엔드 값 비교 및 전체 테이블을 읽는 것에 대한 의사 결정).SQL Server 타임 스탬프 필드를 업데이트하기 위해 WPF에서 시스템 시간을 읽는 방법?

이와 관련하여 어떻게 타임 스탬프를 쓰는 데 시스템 시간을 읽을 수 있습니까? 사용할 SQL Server 필드의 데이터 형식 (DataTime 또는 Time)은 무엇입니까? 그리고이 형식의 가치를 어떻게 비교할 수 있을까요?

답변

2

TIMESTAMP 유형의 데이터베이스 열에 대해 이야기하고 있습니까?

이들은 SQL Server가 내부적으로 업데이트하는 이진 타임 스탬프입니다. 날짜 및 시간과는 아무런 관련이 없습니다. 이진 코드 된 카운터 일뿐입니다. 이 필드는 시스템에서 처리하며 신뢰할 수 있고 매우 정확합니다. 일종의 낙관적 동시성 잠금 메커니즘을 원할 경우이 필드 유형을 사용하십시오.

마지막 수정 날짜와 시간이 포함 된 DATETIME 필드를 원하면 가장 최근에 업데이트 된 열을 현재 날짜/시간으로 설정하는 해당 테이블에서 AFTER INSERT/AFTER UPDATE 트리거를 사용하는 것이 가장 좋습니다. SQL Server의 시간을 자동으로 처리 할 수 ​​있습니다.

DATETIME은 약 3.33ms입니다. SQL Server 2008의 경우 DATETIME2은 필요한 경우 100ns로 정확하게 지정할 수 있습니다. 따라서 DATETIME 열을 사용하여 100 % 정확한 확인 여부를 확인하십시오. 3.33ms의 정확도로 인해 오도 된 결과가 발생할 수 있습니다!

+0

마크, 설명해 주셔서 감사합니다! TIMESTAMP 유형의 SQL Server를 보유하고 비교하기 위해 wpf 응용 프로그램 측면에서 사용할 C# 데이터 형식을 알려주십시오. – rem

+1

@rem : TIMESTAMP의 "네이티브"타입은'byte [8]'- 8 바이트의 배열입니다. 8 바이트이기 때문에 서버에서 'BIGINT'(CAST (yourcol as BIGINT))로 쉽게 변환 할 수 있습니다. 그런 다음 .NET 유형 'long'을 사용하십시오. –

관련 문제