2

Amazon RDS에서 읽기 전용 DB를 만들고 DMS를 사용하여 현장 데이터베이스에서 데이터를 복제하려고합니다. 일반적인 제한의 아마존 DMS 목록에서 그 중 하나는 다음과 같습니다8000 바이트 이상의 정보가있는 소스 복제 행으로 SQL Server를 사용할 때의 DMS 제한

헤더와 매핑 정보를 포함한 정보의 8000 개 이상의 바이트와 행의 변경, 인해 SQL 서버 TLOG 버퍼의 제한이 제대로 처리되지 않습니다 크기.

어떤 경우에 적용됩니까? 테이블에 최대 8,060 바이트의 행을 넣을 수 있다는 인상하에있었습니다. varchar, nvarchar, varbinary, sql_variant 또는 CLR 사용자 정의 형식이 해당 위치에 포인터가있는 다른 행으로 푸시됩니다. 이게 무슨 의미일까요? 이것이 일어날 상황을 이해하려고 노력하고 있습니다.

또한 테이블이 영향을받는 테이블을 결정하려면 어떻게해야합니까?

+0

이 텍스트는 나에게 호 와치처럼 보입니다. SQL 서버가 아닌 아마존의 기술이 한계 일 것입니다. 특히 SQL Server에서는 오버플로 저장소를 통해 더 많은 바이트를 차지하는 행을 업데이트 할 수 있으며 트랜잭션 로그에는 문제가 없습니다. 저자는 "트랜잭션 로그에서 데이터를 빨아 먹는 방식으로 인해 행 변경이 페이지 이상을 차지하는 경우이를 수행 할 수 없습니다."라고 말했지만 실제로 실제적인 영향이 무엇인지는 분명하지 않습니다. if 일부 테이블에 대한 일부 업데이트 또는 * 모든 * 업데이트 만 복제되지 않습니다. –

+0

그건 사실 일 수 있습니다. 분명히하기 위해, 나는 그 데이터 타입을 가진 행이 복제되지 않을 것이라고 말하고있는 것이 아닙니다. 나는 단순히 위의 상황이 어떤 상황에 해당되는지 알아 내려고 노력하고있다. 행이 8060 바이트를 초과 할 수없는 경우 왜 AWS DMS의 제한 사항입니까? – TheTor

+0

행 크기에 대해 말하는 것이 아니라 트랜잭션 로그 버퍼의 한계에 대해 이야기하고 있습니다. 인행 데이터는 8060 바이트를 초과 할 수 없지만 여기서 논의 된 한계와 관련이 없습니다. 확실한 답을 원한다면 아마존에게 직접 묻는 것이 아마 전문가가 나타나기를 기다리는 것보다 건설적인 것일 것입니다. 여기서 말하는 "복제"는 SQL Server의 복제 기능과 관련이 없습니다. –

답변

1

좋아요, 적어도 하나의 유스 케이스에서는 이제 내 자신의 질문에 대답 할 수있을 것 같습니다.

결합 된 열의 가능한 크기와 관련이 없지만 앞에서 설명한 것처럼 그 안에있는 데이터의 양입니다. ID 및 9 개의 varchar (1000) 열이있는 테이블을 만듭니다. 처음 8 개를 1000 바이트로 채우십시오. 그러면 모두가 복제됩니다. 나머지 열을 데이터로 채우고 업데이트가 복제되지 않습니다 (아마도 열 데이터가 페이지에서 푸시 될 때). 이상하게도 varchar (max)는 이런 식으로 영향을받지 않습니다. 일명 (

dbcc showcontig with tableresults 

문제 주위의 방법은 작은 관련 테이블로 잘못된 테이블을 분할하는 것입니다

MaximumRecordSize 칼럼에주의를 기울이고,이 영향을받는 행이있는 테이블을 찾으려면 다음을 실행하려면 이를 정규화), 조인을 수행하여 데이터를 검색합니다. 이것은 데이터베이스의 크기에 따라 가능할 수도 있고 그렇지 않을 수도 있습니다.