2009-06-26 6 views
2

SQL Server 2000 데이터베이스의 행 수를 제한하는 방법이 있습니까? 새 행이 들어올 때 이전 행이 삭제되도록하려면?SQL Server 2000 : 행 수 제한

약 30 일 동안 유지하고 싶은 일부 데이터가 있습니다. 그 후에 테이블이 커지지 않는 한 데이터가 주변에 있는지 또는 삭제 되어도 상관 없습니다.

다른 제안이나 환영 - 저는 데이터베이스에 프로그래밍 할 때 괜찮습니다. 그러나 나는 결코 DBA가 아닙니다.

감사합니다.

답변

5

명시 적으로 없습니다. 그러나 데이터베이스에 대해 을 TRIGGER에 설정하면 30 일이 지난 행을 삭제할 수 있습니다. 따라서 행을 삭제할 때만 행을 삭제할 수 있습니다. 또는, 당신은 제안에 대한 감사를 SQL Server 에이전트를 사용하고

delete from table where insertdate <= dateadd(d, -30, getdate())

+0

트리거가 인서트와 동 기적으로 작동하는지 알고 있습니까? 다른 말로하면 트리거가 잠재적으로 인서트가 더 오래 걸리게할까요? 지금까지 방아쇠를 사용하는 것이 최선의 방법이라고 들리지만 x 행을 삭제하면 향후 쿼리 기간에 어떤 영향을 미치는지 궁금합니다. 제안 해 주셔서 감사합니다. – Charles

+0

그 대답은 큰 것입니다 "It depends." 트리거는 삽입물의 크기에 상관없이 삽입물 당 한 번 (한 번만) 실행됩니다 (사용자가 100 만 개의 행을 수행 할 수 있고 트리거는 한 번만 실행 됨). 또한 트리거는 삽입 후 삽입 후 실행됩니다. 날짜 필드에 클러스터되지 않은 인덱스가있는 경우 보유한 행 수에 관계없이 삭제가 상당히 빠르게 수행되어야합니다. 필드에 색인이없고 대량 삽입을 활용하지 않으면 데이터베이스와 관련된 성능 문제가 발생할 수 있습니다. – Eric

+0

감사합니다. 매우 자세한 답변입니다. 그것은 내 목적을 위해 잘 작동 할 것이다. – Charles

3

이 작업을 수행하는 일반적인 방법은 저장된 항목이나 오래된 항목을 삭제하는 T-SQL 코드 조각을 만들어서 매일 밤 또는 매주 또는 필요한 모든 항목을 실행하는 것입니다.

행 수를 제한하고 SQL Server가 가장 오래된 것부터 자동으로 버리는 시스템 내장 방법은 없습니다.

MArc

+0

안녕 marc_s을 수행하는 저장 프로 시저를 설정할 수 있습니다. 그거 좋은 생각 같아. * 당신이 * 어떻게 쿼리를 예약합니까? 그것은 "직업"이 무엇인가? 내가 말했듯이, 나는 단순한 SQL 이외의 대부분의 DB 개념을 잘 모르고있다. 다시 한번 감사드립니다. – Charles

+0

@Charles : SQL Server Agent에서 작업을 생성 한 다음 예약 할 수 있습니다. 이것이 그가 (그리고 나는) 쿼리 스케줄링에 대해 언급 한 내용입니다. – Eric

+0

우수 - 예정된 직업을 조사 할 것입니다. 제안 해줘서 고마워. – Charles