다중 사용자 액세스 및 RDA

Microsoft SQL Server Compact 3.5의 다중 사용자 액세스는 RDA(Remote Data Access)를 사용하는 경우를 포함하여 언제나 사용이 가능합니다. 다른 사용자가 동일한 SQL Server Compact 3.5 데이터베이스에 액세스하는 동안 끌어오기 또는 밀어넣기 동작을 진행할 수도 있습니다.

끌어오기 작업을 수행하려면 작업 중에 특정 로컬 테이블이 표시되지 않아야 하며 서버에서 데이터를 끌어오는 동안 테이블이 작성되므로 끌어오는 테이블은 끌어오기 작업이 완료되기 전까지 액세스할 수 없습니다. 서버에 데이터를 밀어넣는 경우 밀어넣기가 시작된 후에 데이터가 변경되면 해당 변경 내용은 다음 밀어넣기 작업 시 서버로 전송됩니다. 특정 밀어넣기 작업 후 서버 데이터를 반드시 새로 고쳐야 하는 경우 밀어넣기 및 끌어오기 작업이 모두 완료될 때까지 테이블에 대한 추가 변경이 허용되지 않습니다. 따라서 테이블이 삭제되어도 변경 내용은 손실되지 않습니다.

SQL Server Compact 3.5 데이터베이스에 대한 다중 연결 액세스를 허용하면 개발 모델이 단순해집니다. 또한 SQL Server Compact 3.5 데이터베이스 엔진에서는 다중 응용 프로그램의 요청을 처리하거나 단일 응용 프로그램의 다중 연결 요청을 처리할 수 있으므로 개발자가 데이터베이스 액세스를 예약할 필요가 없습니다. 다중 연결이 필요한 경우 SQL Server Compact 3.5 데이터베이스 엔진에서는 필요에 따라 특정 작업에 대한 데이터를 잠급니다.

참고

일부 64비트 플랫폼 시나리오에서는 이전 버전의 SQL Server Compact를 사용하여 데이터베이스 파일에 동시에 액세스할 수 없습니다. 64비트 구성 요소에 대한 자세한 내용은 64비트 데이터베이스 응용 프로그램 관리를 참조하십시오.

동기화 시 기본 키 변경

RDA 추적 테이블의 경우 기본 키를 기준으로 업데이트, 삽입 및 삭제가 추적됩니다. 기본 키 열에 대한 다중 사용자 액세스가 가능하기 때문에 동기화 작업이 진행되는 동안에는 키본 키 열 값을 변경하지 말아야 합니다.

경고 기본 키 열 값이 변경되는 경우는 드물기는 하지만 기본 키가 변경된 테이블을 동기화하는 도중 기본 키 열 값이 변경되면 오류가 발생하거나 데이터가 손실될 수 있습니다.

테이블 A에서 기본 키 값이 1에서 2로 변경되었습니다. 값 1은 RDA에서 사용하는 추적 열에 저장되므로 밀어넣기가 발생하는 경우 SQL Server Compact 3.5에서 데이터를 새 값으로 업데이트할 때 검색 조건으로 사용할 값을 알고 있습니다.

응용 프로그램에서는 밀어넣기 작업을 시작하고 새로운 값인 2를 업로드 메시지를 통해 검색 값 1과 함께 SQL Server 데이터베이스로 보냅니다. 그러나 동기화 도중 새 데이터 값이 변경되면 밀어넣기가 완료되지 않았기 때문에 추적 열이 검색 값을 1에서 2로 변경하지 않습니다. 이 밀어넣기가 성공하면 해당 행의 다음 밀어넣기는 항상 실패하게 됩니다. 서버에서 기본 키 값이 1에서 2로 변경되었기 때문에 검색 기준 1은 더 이상 유효하지 않습니다.

다중 사용자 액세스에 대한 자세한 내용은 다중 사용자 액세스를 참조하십시오. 잠금에 대한 자세한 내용은 잠금(SQL Server Compact)을 참조하십시오.