1

SQL Server가 내 장점이 아니므로 테이블 만들기, 테이블에서 선택 등을 수행 할 때 길을 잃기 시작합니다.Sync Framework 2.1을 통해 동기화 할 수 있도록 SQL Server 데이터베이스에 대한 적절한 사용 권한을 설정하는 방법을 알아야합니다.

프록시와 SQL 2008 R2 데이터베이스를 통해 동기화되는 Microsoft SQLCompact 3.5 데이터베이스로 데이터베이스 동기화 시나리오를 설정하려고합니다. Microsoft Sync Framework 2.1을 통해 동기화됩니다.

사용자 계정이 데이터베이스의 db_owner 일 때 프록시를 통해 모든 것을 설정하고 올바르게 작동 시켰습니다.

물론 지금은 잠겨 있어야하기 때문에 동기화에 필요한 최소 권한으로 제한하려고했습니다.

는 Microsoft 기사에 따르면, 나는 ... 최소한의 권한

사용 원칙을 다음을 수행해야합니다. 특정 작업을 수행하는 데 필요한 것보다 많은 권한을 부여하지 마십시오. 예를 들어, 다운로드 전용 동기화와 관련된 서버 데이터베이스 테이블에 대해 INSERT 권한을 부여하지 마십시오. 동기화 작업에는 다음 사용 권한이 필요합니다.

Sync Framework에서 메타 데이터 테이블과 기본 테이블을 읽고 쓸 수있는 모든 저장 프로 시저에 대한 EXECUTE 권한.

메타 데이터 테이블 및 동기화 세션 중에 업데이트 될 모든 기본 테이블에 대한 SELECT, INSERT, UPDATE 및 DELETE 권한.

SqlSyncProvider를 사용 제공 SQL Server 데이터베이스, 프로비저닝에 대해 다음과 같은 권한 요구 사항을 인식 할 때 :

메타 데이터 테이블의 생성을 가능하게 TABLE 권한을 CREATE : scope_info 및 scope_config 및 추적 각 기본 테이블에 대해 작성된 테이블.

트리거를 기본 테이블에 추가하는 ALTER TABLE.

동기화 프레임 워크에 필요한 절차를 만들 수있는 권한을 만듭니다.

scope_info 및 scope_config 테이블에 대한 SELECT 및 INSERT 권한.

기본 테이블에 대한 SELECT 권한.

나는 나를 위해 동기화 데이터베이스와 프록시를 생성하는 비주얼 스튜디오 2010에서 마법사를 허용했다.

이와 같이 - SQL Server 데이터베이스에서 scope_info 및 scope_config 테이블을 찾을 수 없으며 이러한 테이블에 대한 사용 권한을 설정할 수 없도록 메타 데이터 테이블을 찾을 수 없습니다. 또한 - 동기화 프레임 워크가 사용하려고하는 저장 프로 시저를 어디에서 찾을 수 있습니까? - 찾았지만 찾을 수 없습니다.

어디서 찾을 수 있습니까? 적절한 권한을 설정하는 방법은 무엇입니까?

SQL Server 데이터베이스에서 데이터 사용기 및 데이터 기록기, 삽입, 업데이트, 삭제 및 선택 권한과 실행 권한을 부여했지만 동기화가 실패합니다. 또한 테이블 만들기, 프로 시저 작성 및 사용자에 대한 데이터베이스에 대한 ALTER 권한을 부여했지만 여전히 실패합니다.

사용자가 db_owner 역할을 사용하도록 설정하면 작동합니다.

I 나타나는 오류는 다음과 같습니다

, 클라이언트 데이터베이스를 초기화 할 수 없습니다 때문에 테이블 'tblApplications, tblApplicationConfiguration, tblApplicationInstallProperties, tblApplicationPreRequisites, tblApplicationTypes, tblComputerApps, tblComputers, tblComputerTypes, tblDriveHWSerials, tblDrives, tblDriveTypes의 스키마 , tblFunctions, tblLocationApps, tblLocationComputers, tblLocationIPAddress, tblLocations, tblLocationUsers, tblPermissions, tblRegionLocations, tblRegions, tblRegisteredModules, tblRequestFormats, tblRequestStatus, tblRequestTypes, tblRoles, tblRoleUsers, tblSecurity, tblUsers를, tblVehicle, tblVehicleLocationMap, tblVehicleMake, tblRequestProcessingStatus, tblDriveStatus, tblVide oViewTypes '를 DbServerSyncProvider의 GetSchema() 메서드로 검색 할 수 없습니다. 클라이언트 데이터베이스에 연결할 수 있고 SyncAdapter의 SelectIncrementalInsertsCommand 속성 또는 SelectIncrementalUpdatesCommand 속성이 올바르게 지정되어 있는지 확인하십시오.

릴리스되었을 때 db_owner 역할을 사용할 수 없습니다.

답변

2

로컬 데이터베이스 캐시 프로젝트 항목과 공동 작업/피어 투 피어 공급자 (SqlSyncProvider/SqlCeSyncProvider)에서 사용하는 오프라인 공급자 (SqlCeClientSyncProvider/DbServerSyncProvider)는 Sync Framework에서 두 가지 유형의 데이터베이스 공급자가 있습니다.

오프라인 공급자는 scope_xxx 테이블을 사용하지 않으므로 찾을 수 없습니다.

마법사를 통해 동기화를 구성 할 때 기본 SQL Server 변경 내용 추적을 사용한다고 가정하고 데이터베이스에 연결하는 데 사용중인 계정에 VIEW CHANGE TRACKING 권한을 부여하십시오.

+0

고마워요. 선생님. 실종 신고가있었습니다. 신속하고 정확한 대답에 많은 감사드립니다. – Roddles

0

이 도움이 될 것입니다 있는지 확실하지 않습니다,하지만 난 this을 발견

시도 대신 SyncTable 객체에 UploadOnly를 설정할 수 있습니다. SyncAdapterBuidler에이를 설정할 때 빌더가 선택 증가 명령을 생성하지 않습니다. 이 명령은 데이터베이스에서 테이블 스키마를 가져 오는 데 사용됩니다. 이것들이 누락되었으므로 스키마 오류가 발생합니다.

또한 this 블로그 항목이 도움이됩니다.

+0

답변 주셔서 감사하지만 테이블에 대한 사용 권한을 설정해야 내 문제의 원인이었다. db_owner 역할이 할당되었을 때 syncronise 할 수 있다는 사실이 증명 된 것입니다. 이제 막 올바른 권한을 얻으려고했습니다. 뷰 변경 추적을 스키마에 부여하자마자 동기화가 온라인으로 돌아 왔습니다. – Roddles

0

JUNET가 언급 한 바와 같이, 당신은 변경 내용 추적에

ALTER DATABASE YourDataBaseName 
SET CHANGE_TRACKING = ON 
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)