MS DTC (Microsoft Distributed Transaction Coordinator)

 - 여러 데이터 베이스나 시스템 간의 분산 트랜잭션을 관리하는 서비스

 - 분산 트랜잭션은 여러 데이터 소스에 걸쳐 일관성을 유지해야 하는 경우에 사용

  예) 하나의 트랜잭션이 여러 데이터베이스에 걸쳐 있을 때, 모든 데이터베이스가 성공적으로 업데이트되거나, 아니면 전혀 업데이트되지 않도록 보장

 - 주로 SQL Server와 같은 데이터베이스 시스템에서 사용됨.

 - 트랜잭션이 여러 서버에 걸쳐 있을 때 이를 조정하여 데이터 일관성을 유지

 

 

그렇다면, Linked Server와 MS DTC의 관계는?

1. Linked Server를 통해 다른 데이터베이스에 접근할 때, 트랜잭션이 여러 서버에 걸쳐 있을 경우 MS DTC가 이를 관리

2. Linked Server를 통해 다른 데이터베이스와의 트랜잭션에 참여하고 이를 MS DTC가 리소스 관리함.

에러 메시지

- 인덱스 'A'을(를) 만들 수 없습니다.   
개체 이름 '테이블명' 및 인덱스 이름 'A'에 키가 중복되므로 CREATE UNIQUE INDEX 문이 종료되었습니다. 중복 키 값은 (B)입니다. 
제약 조건 또는 인덱스를 만들 수 없습니다. 이전 오류를 참조하십시오. 
문이 종료되었습니다. 



원인 : 인덱스를 설정하는 과정에서 해당 필드에 대하여 테이블에 중복된 데이터가 존재하여 발생합니다.

 

해결 : 중복 데이터를 제거 해주면 됩니다. ^^

1. 트리거 활성화

ALTER TABLE [테이블이름] ENABLE TRIGGER [트리거이름]

 

2. 트리거 비활성화

ALTER TABLE [테이블이름] DISABLE TRIGGER [트리거이름]

ISNULL 

NULL 값을 다른 값으로 대체하기.

컬럼의 값이 NULL인 경우 이를 다른 값으로 대체하기 위한 함수.


예문)

SELECT ISNULL(age,0) FROM 테이블명


단, NULL을 대체하는 값이 같은 데이터형이어야 함.




CONVERT(포맷(길이), 날짜 값, 변환형식)

날짜(DATE) 형식의 값을 특정 문자 포맷으로 바꾸는 방법


예문) SELECT CONVERT(varchar, getdate(), 120)

변환형식에는 여러가지가 있다.

120 이면 yyy-mm-dd hh:mi:ss 이렇게 변경되고, 23이면 yyyy-mm-dd 이렇게 변경된다.


필요시에 찾아서 사용하기.

+ Recent posts