SQL Server 2008R에서 이상한 버그 또는 동작이 발견되었습니다. 1 스키마에 대한 역할에 EXECUTE 권한을 부여하려고합니다. 그러나 시스템 개체를 볼 때 EXECUTE 사용 권한은 SYSTEM_TABLE sysallocunits으로 설정되어 있습니다. 다른 스키마에 권한을 부여하면 모든 것이 잘되고 사용 권한이 스키마에 설정됩니다. 내가 출력 다음 무엇입니까 쿼리를시스템 개체가 잘못된 GRANT를 반환합니다.
GRANT EXECUTE ON SCHEMA::Sync TO [app_TSSyncService_web_svc]
select princ.name
, princ.type_desc
, perm.permission_name
, perm.state_desc
, perm.class_desc
, object_name(perm.major_id)
from sys.database_principals princ
left join
sys.database_permissions perm
on perm.grantee_principal_id = princ.principal_id
WHERE princ.name = 'app_TSSyncService_web_svc'
를 다음을 사용 : 나는 다른 역할이 스키마에 사용 권한을 부여 할 때
name type_desc permission_name state_desc class_desc (No column name)
app_TSSyncService_web_svc DATABASE_ROLE EXECUTE GRANT SCHEMA sysallocunits
같은 일이 발생합니다.
UPDATE 그냥 내 스키마 어떤 제안이 어떻게 하드 코딩하지 않고 무시하는 쿼리를 다시 작성할 수 있습니다 object_id의 동일한 sysallocunits을 가지고 있다는 것을 발견?
귀하의 답변은 저에게 충분합니다. 쿼리를 다시 작성할 필요가 없습니다. 한 가지 더 궁금한 점이 있습니다. 다른 문제가 있습니까? 나는 스키마를 제외하고는이 상황을 일으킬 수있는 다른 무엇을 의미합니까? 레코드에 major_id가 0보다 크면 오브젝트가 아닐 수 있습니까? –