두 번째 SQL Server 인스턴스에 프로덕션 데이터베이스와 보관 데이터베이스가 있습니다.프로덕션 데이터베이스 보관 SQL Server 2008 삽입/업데이트
프로덕션 데이터베이스에 데이터를 삽입하거나 업데이트 (삭제하지 않음) 할 때 동일한 데이터를 아카이브 데이터베이스에 삽입하거나 업데이트해야합니다.
어떻게해야할까요?
감사
두 번째 SQL Server 인스턴스에 프로덕션 데이터베이스와 보관 데이터베이스가 있습니다.프로덕션 데이터베이스 보관 SQL Server 2008 삽입/업데이트
프로덕션 데이터베이스에 데이터를 삽입하거나 업데이트 (삭제하지 않음) 할 때 동일한 데이터를 아카이브 데이터베이스에 삽입하거나 업데이트해야합니다.
어떻게해야할까요?
감사
가 같은 DB 인스턴스에있는 경우, 트리거가 테이블의 많은 아니라 가정 사소한 것입니다.
크기가 커지면 SQL Server 복제를 조사하는 것이 좋습니다. Microsoft는 올바른 작업을 수행하는 데 많은 시간과 돈을 투자했습니다.
트리거를 사용하려는 경우 프로덕션 데이터베이스의로드 크기를 고려해야 할 수 있습니다. 매우 집중적 인 데이터베이스 인 경우 복제 또는 미러링 또는 로그 전달과 같은 고 가용성 솔루션을 사용하는 것이 좋습니다. 필요에 따라 솔루션 중 하나가 적합 할 수 있습니다. 동시에, 구현하는 것에 따라 변경해야하는 "콜드"복구 솔루션을 고려해야합니다.
복제는 삭제 내용도 복제합니다. 그러나 아카이브 데이터베이스에서 h 제를 h 제하지 않으면 프로덕션 데이터베이스에서는 값이 유효하지만 값이이 L 존재하기 때.에 아카이브 데이터베이스에서는 유효하지 않은 고유 인덱스의 행에서. 제 점이 _ 생할 수 있습니다. 당신의 디자인이 문제가되지 않는 것을 의미한다면, 생산 테이블에 간단한 트리거는 당신을 위해이 작업을 수행합니다
CREATE TRIGGER TR_MyTable_ToArchive ON MyTable FOR INSERT, UPDATE AS
BEGIN
SET ROW_COUNT OFF
-- First inserts
SET IDENTITY_INSERT ArchiveDB..MyTable ON -- Only if identity column is used
INSERT INTO ArchiveDB..MyTable(MyTableKey, Col1, Col2, Col3, ...)
SELECT MyTableKey, Col1, Col2, Col3, ...
FROM inserted i LEFT JOIN deleted d ON i.MyTableKey = d.MyTableKey
WHERE d.MyTableKey IS NULL
SET IDENTITY_INSERT ArchiveDB..MyTable OFF -- Only if identity column is used
-- then updates
UPDATE t SET Col1 = i.col1, col2 = i.col2, col3 = i.col3, ...
FROM ArchiveDB..MyTable t INNER JOIN inserted i ON t.MyTableKey = i.MyTableKey
INNER JOIN deleted d ON i.MyTableKey = d.MyTableKey
END
이것은 아카이브 데이터베이스 프로덕션 데이터베이스와 동일한 서버에있는 것으로 가정합니다. 그렇지 않은 경우 연결된 서버 항목을 만든 다음 ArchiveDB..MyTable
을 ArchiveServer.ArchiveDB..MyTable
으로 바꿔야합니다. 여기서 ArchiveServer
은 연결된 서버의 이름입니다.
그러나 프로덕션 데이터베이스에 이미 많은로드가있는 경우 두 배로 증가한다는 점에 유의하십시오. 이것을 피하기 위해 각 테이블에 업데이트 플래그 필드를 추가하고 데이터베이스로드가 최소 일 때 (예 : 오전 1시) 예약 된 작업을 실행할 수 있습니다. 그런 다음 트리거는 필드를 삽입의 경우 I
또는 프로덕션 데이터베이스의 업데이트의 경우 U
으로 설정하고 예약 된 작업은이 필드의 값에 따라 아카이브 데이터베이스에서 업데이트 또는 삽입 한 다음 필드를 재설정합니다 완료되면 NULL
으로 변경하십시오.
보관 파일 DB에 트리거를 작성하십시오. 데이터베이스 파일에 많은 트랜잭션이있을 경우 – Teja
@Vutukuri 어떻게 처리합니까? 적절한 해결책이 될까요? – rvphx