1

많은 고용주 응용 프로그램은 데이터를 특정 사용자 또는 그룹 집합으로 제한하기위한 유사한 내부 권한 구조를 공유합니다. 그룹은 중첩 될 수도 있습니다.데이터베이스 사용 권한 구조

현재이 접근법에서 직면 한 문제는 사용 권한을 열거하는 것이 매우 느립니다. 현재 메서드는 여러 커서 및 임시 테이블이있는 저장 프로 시저를 사용합니다. 이것은 소규모 응용 프로그램에서도 잘 작동하지만 지금은 빠르게 성장하고있는 특정 시스템이 하나 있습니다. 속도가 느려지 기 시작합니다.

기본 테이블 구조는 다음과 같습니다.

tblUser {사용자 ID, 사용자 이름, WindowsLogonName}

tblGroup {그룹 ID, 이름, 설명, SystemFlag}

tblGroupGroup {GroupGroupID, 이름,}

tblGroupUser {GroupUserID, Name,}

을 모두 묶어서;

tblPermission {PermissionID, SecurityObjectID, SecuredID, TABLENAME, AllowFlag}

같은 행 ..

를 '5255-5152-1234-5678'포함

'{그룹 ID} , '{tblJob에있는 ID}', 'tblJob에있는 ID', 1

'4240-7678-5435-8774', '{사용자 ID}', '{ID는 tblJob에있는 항목' tblJob ', 1

'5434-2424-5244-5678 ','{그룹의 ID} ', {ID tblTask} ','tblTask ​​', 0

모든 그룹을 열거하고 보안 행의 ID를 가져 오는 데 더 효율적인 방법이 있어야합니까?

더 복잡하게하려면; 사용자가 행에 대한 액세스가 명시 적으로 거부 된 경우 그룹 권한이 무효화됩니다. 이것은 모두 MSSQL에 있습니다.

+0

어떤 버전의 SQL Server를 사용하고 있습니까? 몇 가지 제안 사항이 있지만 SQL Server 버전에 따라 다릅니다. 더 높은로드 응용 프로그램에서 완성 된 권한을 확인하십시오. 선택을 허용하고 거부하는 수표를 나눌 수 있는데, 이는 앱에서 거부보다 ​​많은 수주를 보는 데 익숙하므로 실행을 단순화 할 수 있습니다. – u07ch

+0

SQL Server 2005. '상위로드 응용 프로그램'에 대한 정보는 어디에서 찾을 수 있습니까? –

답변

0

tblPermission을 두 개의 테이블로 분리하는 것이 유용 할 것이라고 생각합니다. 하나는 그룹 용이고 다른 하나는 사용자 용입니다. 그룹과 사용자를 둘 다 보유함으로써 디자인에 복잡성을 더하는 것처럼 보입니다 (어쩌면 저장 프로 시저가 필요한 이유 일 수도 있습니다).

tblPermission 테이블을 (tblUserPermission 및 tblGroupPermission과 같은 형식으로) 무너 뜨려도 tblPermission처럼 보이는 테이블을 원하는 경우 두 테이블의 데이터를 조합하여 뷰를 만들 수 있습니다.

희망이 도움이됩니다. 저장 프로 시저의 예제가 있습니까?

+0

귀하의 제안에 감사드립니다.하지만 사용자 및 그룹 권한을 분리하면 권한이 항상 사용자 및 그룹 단위로 계산되므로 사안을 더욱 복잡하게 만듭니다. 우리는 또한 특정 장소에서 물건을 기대하는 합리적으로 잘 정의 된 객체 모델을 가지고 있습니다. 권한을 열거 할 때 잘 작동하는 것처럼 보이는이 스크립트를 조합했습니다. http://pastebin.com/f3877c416 몇 가지 테스트에서 현재 저장 프로 시저와 동일한 수의 행을 반환하지만 30 대신 1 초 미만으로 반환합니다. –

0

Recursive 공통 테이블 식 (CTE) 계층 적 쿼리를 사용할 수 있다고 생각합니다. 검색하면 많은 예제를 찾을 수 있습니다. This이 그 중 하나입니다.

0

아마도 디자인은 괜찮지 만 구현/코드가 잘못되었을 수 있습니다.

일부의 생각 :

  • 의 모든 ID 열이 GUID 있습니까? 권장하지 않음 Kimberley L Tripp article
  • 키 또는 INCLUDE의 다른 열이 포함 된 모든 외래 키에 대한 인덱스
  • 정기 유지 관리? 예를 들어, 조각난 인덱스, 날짜 등의 OT 통계
  • 모든 데이터 유형 매칭 (더 FKS지지 않습니다) 위치 :

    도움이 될 수

에 좀 더 스키마 정보와 실적이 저조 코드의 예 크리프 수 있습니다 데이터 형식 우선 순위와 암시 적 변환 오류