많은 고용주 응용 프로그램은 데이터를 특정 사용자 또는 그룹 집합으로 제한하기위한 유사한 내부 권한 구조를 공유합니다. 그룹은 중첩 될 수도 있습니다.데이터베이스 사용 권한 구조
현재이 접근법에서 직면 한 문제는 사용 권한을 열거하는 것이 매우 느립니다. 현재 메서드는 여러 커서 및 임시 테이블이있는 저장 프로 시저를 사용합니다. 이것은 소규모 응용 프로그램에서도 잘 작동하지만 지금은 빠르게 성장하고있는 특정 시스템이 하나 있습니다. 속도가 느려지 기 시작합니다.
기본 테이블 구조는 다음과 같습니다.
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에 있습니다.
어떤 버전의 SQL Server를 사용하고 있습니까? 몇 가지 제안 사항이 있지만 SQL Server 버전에 따라 다릅니다. 더 높은로드 응용 프로그램에서 완성 된 권한을 확인하십시오. 선택을 허용하고 거부하는 수표를 나눌 수 있는데, 이는 앱에서 거부보다 많은 수주를 보는 데 익숙하므로 실행을 단순화 할 수 있습니다. – u07ch
SQL Server 2005. '상위로드 응용 프로그램'에 대한 정보는 어디에서 찾을 수 있습니까? –