2009-07-07 5 views
0

2 개의 클라이언트가있는 시스템이 있습니다 (증가 할 것입니다). 이 두 클라이언트는 동일한 서버/데이터베이스에 연결되지만 다른 서버는 중요한 정보를 볼 수 없어야합니다. 그러나 일부 중요하지 않은 공유 정보가 있습니다.SQL Server 동일한 데이터베이스에있는 클라이언트간에 데이터에 대한 액세스를 제어하는 ​​방법

두 클라이언트 모두를 대신하여 작업하는 관리 부서도 있습니다. 그들은 모든 민감한 데이터를 볼 수 있습니다.

현재 문제의 테이블에 대해 ClientID를 보유하고 뷰와 쿼리를 혼합하여 ClientID를 확인하여 각 클라이언트에 대한 액세스를 제어합니다.

예를 들어 Google 시스템에서이 문제를 일관되게 처리하고자합니다. 모든 뷰 또는 모든 쿼리, 그러나이 상황을 처리하기 위해 뷰를 사용하는 것보다 더 쉽고/더 좋은 패턴이 있을지 궁금하다.

우리는 Sql Server 2005를 사용하고 있지만 2008로 업그레이드 할 수 있습니다.

건배

답변

2

가장 논리적 방법은 각각의 사용자가 볼 수있는 필터링 (인덱스) 전망을 가지고있다. 보기에 대해 각 클라이언트에 읽기/쓰기 권한을 추가하십시오. 관리자는 테이블에 직접 액세스합니다.

하지만 각 클라이언트는 논리적으로 구분 된 엔터티 형식입니다. 경우에는 클라이언트 당 1 db 및 공유 자료에 대해 1 db가 있다고 생각할 수 있습니다. 관리자는 모든 것을 액세스 할 수 있으며 각 클라이언트는 자신의 db에만 액세스하고 공통 db에서 읽습니다.

3 번째 옵션은 스키마를 조사하여 클라이언트를 분리하는 것입니다.

+0

Microsoft Reporting Services에서보고를 정확히 처리하는 방법. 실행시 행 수준의 데이터에 대한 사용 권한을 결정하는 테이블에 SPID를 통해 결합하는 뷰가 있습니다. – u07ch

+0

spids로 가입 하시겠습니까? 그래서 새로운 사용자가 연결할 때마다 spid 테이블을 채 웁니까? –

+0

그래서 우리는 50 명의 클라이언트가있어 50 명의 모든 데이터베이스에 연결할 필요가있는 관리자를위한 앱이 있습니까? – MrEdmundo

관련 문제