복붙노트

[SQL] 선택 권한, 데이터베이스 'mssqlsystemresource', 스키마 'SYS'대상 '을 sysobjects'에 거부

SQL

선택 권한, 데이터베이스 'mssqlsystemresource', 스키마 'SYS'대상 '을 sysobjects'에 거부

SETUP : SQL 서버 2005 및 DotNetNuke의 05.01.02.

이 날은 그것의 SQL 스크립트에서 "dbo.sysobjects에서 선택 *"를 가진 DNN 모듈을 설치하려고 시작했다. 다음과 같은 오류와 함께 실패 :

나는 DNN 사용자 계정으로 SQL Server Management Studio를 통해 데이터베이스에 로그인하고, 내가하려고 할 때 같은 오류가 발생하고 sysobjects의보기에서 SELECT를 수행합니다.

나는 그보기로 DNN 사용자 계정을 명시 적 SELECT 권한을 부여했습니다. > 사용자 - -> DNNUserLogin-> 마우스 오른쪽 클릭 -> 속성 - 나는 보안으로 이동하여이를 확인할 때> 보안 개체와 sys.sysobjects보기 찾을 수 아래로 스크롤,이 사용자 계정에 DBO에 대한 명시 적 권한이 말한다 : 그리고 SELECT 체크 박스가 선택되어 있습니다. 그러나 나는 아직도을 sysobjects의 선택이 DNN 사용자 계정 것과 볼 수행 할 수 없습니다.

내가 뭘 잘못하고 있죠? 어떻게이 일을 할 수 있습니까?

해결법

  1. ==============================

    1.이뿐만 아니라 권한을 거부 갖는 사용자와의 문제였다 권한을 부여 내 급히 나는 기본적으로 사용자의 모든 것을 주었다. 그리고 사망했다 거부합니다. 나는 그 권한을 제거 그래서 빨리 일했다.

    이뿐만 아니라 권한을 거부 갖는 사용자와의 문제였다 권한을 부여 내 급히 나는 기본적으로 사용자의 모든 것을 주었다. 그리고 사망했다 거부합니다. 나는 그 권한을 제거 그래서 빨리 일했다.

  2. ==============================

    2.저도 같은 오류를했고 db_denydatawriter와 DB 사용자의 db_denydatreader DB를 역할을 제거하여 해결했다. 이를 위해 로그인에 해당하는 DB 사용자 >> 속성 >> 사용자 맵핑 >> DB를 발견하고 >> 언급 된 DB 사용자 역할의 선택을 취소 선택을 선택합니다. 그것은 그게 전부!

    저도 같은 오류를했고 db_denydatawriter와 DB 사용자의 db_denydatreader DB를 역할을 제거하여 해결했다. 이를 위해 로그인에 해당하는 DB 사용자 >> 속성 >> 사용자 맵핑 >> DB를 발견하고 >> 언급 된 DB 사용자 역할의 선택을 취소 선택을 선택합니다. 그것은 그게 전부!

  3. ==============================

    3.당신에게 공공의 역할에 대한 완전한 권한을 제공 할 것입니다 좋은 서버에이 코드를 실행합니다. 출력을 복사하여 문제가있는 서버에 붙여 넣습니다. 실행합니다. 다시 로그인하십시오. 그것은 우리의 문제를 해결.

    당신에게 공공의 역할에 대한 완전한 권한을 제공 할 것입니다 좋은 서버에이 코드를 실행합니다. 출력을 복사하여 문제가있는 서버에 붙여 넣습니다. 실행합니다. 다시 로그인하십시오. 그것은 우리의 문제를 해결.

    SELECT  SDP.state_desc ,
            SDP.permission_name ,
            SSU.[name] AS "Schema" ,
            SSO.[name] ,
            SSO.[type]
    FROM    sys.sysobjects SSO
            INNER JOIN sys.database_permissions SDP ON SSO.id = SDP.major_id
            INNER JOIN sys.sysusers SSU ON SSO.uid = SSU.uid
    ORDER BY SSU.[name] ,
            SSO.[name]
    
  4. ==============================

    4.문제가 무엇인지에 대한 많은 가능성이 있기 때문에. 여기에서 볼 수있는 또 다른 가능성이다. 나는 데이터베이스에 내 자신의 역할을 설정했다 무언가로 달렸다. (예, "관리자", "관리자", "DATAENTRY", "고객"의 경우, 제한의 자신의 종류와 각)가 있었다 "관리자"역할이나 이상 사용할 수있는 유일한 사람 - 그들은 또한 설정했기 때문에 시스템 관리자로 그들은 데이터베이스에 사용자를 추가했다 (그리고 그들은 매우 신뢰했다) 때문이다. 또한, 추가되는 한 사용자는 Windows 도메인 사용자는했다 - 자신의 도메인 자격 증명을 사용. (데이터베이스에 접근 할 수있는 모두가 우리의 도메인에 있어야했지만, 도메인에서 모든 사람이 데이터베이스에 액세스 할 수 있었다 -. 그리고 그들 중 몇은 변경에 대한 액세스를했다)

    문제가 무엇인지에 대한 많은 가능성이 있기 때문에. 여기에서 볼 수있는 또 다른 가능성이다. 나는 데이터베이스에 내 자신의 역할을 설정했다 무언가로 달렸다. (예, "관리자", "관리자", "DATAENTRY", "고객"의 경우, 제한의 자신의 종류와 각)가 있었다 "관리자"역할이나 이상 사용할 수있는 유일한 사람 - 그들은 또한 설정했기 때문에 시스템 관리자로 그들은 데이터베이스에 사용자를 추가했다 (그리고 그들은 매우 신뢰했다) 때문이다. 또한, 추가되는 한 사용자는 Windows 도메인 사용자는했다 - 자신의 도메인 자격 증명을 사용. (데이터베이스에 접근 할 수있는 모두가 우리의 도메인에 있어야했지만, 도메인에서 모든 사람이 데이터베이스에 액세스 할 수 있었다 -. 그리고 그들 중 몇은 변경에 대한 액세스를했다)

    어쨌든,이 작업 시스템이 갑자기 작동이 중지 나는 위의와 유사한 오류 메시지를 얻고 있었다. 나는이 해당 데이터베이스에서 "공공"역할에 대한 모든 권한을 가서 내가 만든했다고 모든 역할에 그 권한을 추가하는 것이었다 해결하고 결국 무엇인가. (또는 오히려, 당신이 그들을 "추가"할 수 있지만 "숙박은 추가"하지 않을 것이다) 나는 모든 사람이 당신이 그들을 추가 할 수없는 경우에도 "공공"역할에 있어야한다 알고있다.

    \ 데이터베이스 \\ 보안 \ 역할 \ 데이터베이스 역할 - "(사 SQL 서버)"그래서, "SQL Server 관리 Studio"에, 나는 즉, 내 응용 프로그램의 데이터베이스로 갔다 (내 현지화 된 이름은 <> 괄호 안에 가려진) 공개 "선택"속성 \ 공개 ".를 마우스 오른쪽 버튼으로 클릭"데이터베이스 역할 속성 "를합니다."-. 공공 목록을 이동 보안 개체 "페이지"대화는 선택 "하고 목록의 각 요소에 대해, 마련 는 SQL "부여"문은 다른 역할에 권한. 그래서이, 예를 들면, 스칼라 함수가 있음을 정확히 부여하려면 "[dbo가]. [fn_diagramobjects]"되는 "공공"의 역할은이 특권. 그래서를 "실행", I 다음 줄을 추가 :

    EXEC ( 'GRANT EXECUTE ON [dbo].[fn_diagramobjects] TO [' + @RoleName + '];' ) 
    

    나는 "보안 개체"목록의 모든 요소에 대해이 작업을 수행 한 후, 나는 내 역할 테이블에있는 모든 역할을 통해 커서 선택에 잠시 루프 것을 싸서. 이 명시 적으로 내 데이터베이스 역할에 "공개"역할의 모든 권한을 부여. 그 시점에서, 내 모든 사용자가 다시 작동했다 (심지어 내가 그들의 "시스템 관리자"액세스 제거 후 -. 무슨 일이 있었는지 알아 냈 동안 임시 조치로 수행을)

    나는 확실히 거기에 데이터베이스 개체에 대한 쿼리 어떤 종류의 일을하고, 공공 역할을 선택하여이 작업을 수행 할 수있는 더 나은 (더 우아한) 방법입니다 만, 조사, 나는 그것을 파악되지 않은 약 반 시간 후에 해요 그래서 난 그냥 그것에게 무차별 방법을했다. 경우는 여기에 내 코드입니다, 다른 사람을 도움이됩니다.

    CREATE PROCEDURE [dbo].[GrantAccess]
    AS
    DECLARE @AppRoleName AS sysname
    
    DECLARE AppRoleCursor CURSOR LOCAL SCROLL_LOCKS FOR
        SELECT AppRoleName FROM [dbo].[RoleList];
    
    OPEN AppRoleCursor
    
    FETCH NEXT FROM AppRoleCursor INTO @AppRoleName
    WHILE @@FETCH_STATUS = 0
    BEGIN
    
        EXEC ( 'GRANT EXECUTE ON [dbo].[fn_diagramobjects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_alterdiagram] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_creatediagram] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_dropdiagram] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_helpdiagramdefinition] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_helpdiagrams] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT EXECUTE ON [dbo].[sp_renamediagram] TO [' + @AppRoleName + '];' ) 
    
        EXEC ( 'GRANT SELECT ON [sys].[all_columns] TO [' + @AppRoleName + '];' )
        EXEC ( 'GRANT SELECT ON [sys].[all_objects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[all_parameters] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[all_sql_modules] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[all_views] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[allocation_units] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[assemblies] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[assembly_files] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[assembly_modules] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[assembly_references] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[assembly_types] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[asymmetric_keys] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[certificates] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[change_tracking_tables] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[check_constraints] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[column_type_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[column_xml_schema_collection_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[computed_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[conversation_endpoints] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[conversation_groups] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[conversation_priorities] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[crypt_properties] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[data_spaces] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_audit_specification_details] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_audit_specifications] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_files] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_permissions] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_principal_aliases] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_principals] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[database_role_members] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[default_constraints] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[destination_data_spaces] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[event_notifications] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[events] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[extended_procedures] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[extended_properties] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[filegroups] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[foreign_key_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[foreign_keys] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_catalogs] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_index_catalog_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_index_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_index_fragments] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_indexes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_stoplists] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[fulltext_stopwords] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[function_order_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[identity_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[index_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[indexes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[internal_tables] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[key_constraints] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[key_encryptions] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[message_type_xml_schema_collection_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[module_assembly_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[numbered_procedure_parameters] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[numbered_procedures] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[objects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[parameter_type_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[parameter_xml_schema_collection_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[parameters] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[partition_functions] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[partition_parameters] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[partition_range_values] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[partition_schemes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[partitions] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[plan_guides] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[procedures] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[remote_service_bindings] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[routes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[schemas] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_contract_message_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_contract_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_contracts] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_message_types] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_queue_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[service_queues] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[services] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[spatial_index_tessellations] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[spatial_indexes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sql_dependencies] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sql_modules] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[stats] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[stats_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[symmetric_keys] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[synonyms] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[syscolumns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[syscomments] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysconstraints] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysdepends] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysfilegroups] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysfiles] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysforeignkeys] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysfulltextcatalogs] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysindexes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysindexkeys] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysmembers] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysobjects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[syspermissions] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysprotects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysreferences] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[system_columns] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[system_objects] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[system_parameters] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[system_sql_modules] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[system_views] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[systypes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[sysusers] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[table_types] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[tables] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[transmission_queue] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[trigger_events] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[triggers] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[type_assembly_usages] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[types] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[views] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_indexes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_attributes] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_collections] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_component_placements] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_components] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_elements] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_facets] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_model_groups] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_namespaces] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_types] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_wildcard_namespaces] TO [' + @AppRoleName + '];' ) 
        EXEC ( 'GRANT SELECT ON [sys].[xml_schema_wildcards] TO [' + @AppRoleName + '];' ) 
    
        FETCH NEXT FROM AppRoleCursor INTO @AppRoleName
    END
    
    CLOSE AppRoleCursor
    RETURN 0
    
    GO
    

    그 시스템에 있으면, 난 그냥 일하기 위해 "Exec을 GrantAccess"을 필요로했다. (물론, 나는 데이터베이스 역할의 이름을 포함하는 "AppRoleName"필드를 포함하는 테이블 [의 RoleList]을 가지고있다.

    그래서, 신비의 유적 : 왜 내 모든 사용자는 "공공"의 역할을 잃게 않았고 내가 왜 그들에게 그것을 돌려 줄 수 없었다? SQL 서버 2008 R2에 대한 업데이트의이 부분이 되었습니까? 나는 각 사용자를 삭제하고 도메인과의 연결을 새로 그래서 다시 추가하는 또 다른 스크립트를 실행하기 때문에이 되었습니까? 음,이 지금은이 문제를 해결합니다.

    마지막 경고 : 당신은 아마 확실 여기, 뭔가 빠진 그름이없는하려면이 프로그램을 실행하기 전에 시스템의 "공공"의 역할을 확인해야합니다. 그것은 가능한 일이 시스템에 대한 다른 항상.

    이 다른 사람을 도움이되기를 바랍니다.

  5. ==============================

    5.누군가가 sys.configurations에 대한 사용 권한을 취소했을 수도 것 같습니다 공공 역할. 또는이 특정 사용자에게이보기에 대한 액세스를 거부. public 역할은 sys.configurations 테이블에서 제거 된 후 또는 사용자가 생성되었습니다.

    누군가가 sys.configurations에 대한 사용 권한을 취소했을 수도 것 같습니다 공공 역할. 또는이 특정 사용자에게이보기에 대한 액세스를 거부. public 역할은 sys.configurations 테이블에서 제거 된 후 또는 사용자가 생성되었습니다.

    공용 사용자 sys.configurations 개체에 대한 SELECT 권한을 제공합니다.

  6. ==============================

    6.나는 로그인, 보안에서 로그인 사용자의 속성을 참조하여이 문제를 해결했다. 다음 사용자 매핑에 가서에서 db_datareader 및 db_dataweriter 옵션을 체크 한 후 데이터베이스를 선택합니다.

    나는 로그인, 보안에서 로그인 사용자의 속성을 참조하여이 문제를 해결했다. 다음 사용자 매핑에 가서에서 db_datareader 및 db_dataweriter 옵션을 체크 한 후 데이터베이스를 선택합니다.

  7. ==============================

    7.내 경우, 내 사이트가 공유 호스팅에서 호스팅, 심지어 내 데이터베이스가 다운 잠겨 따라서 내 데이터베이스에 관련된없는 사용을 통해 자원이이었다, 호스팅 패널 Plesk를했다

    내 경우, 내 사이트가 공유 호스팅에서 호스팅, 심지어 내 데이터베이스가 다운 잠겨 따라서 내 데이터베이스에 관련된없는 사용을 통해 자원이이었다, 호스팅 패널 Plesk를했다

  8. from https://stackoverflow.com/questions/1473315/the-select-permission-was-denied-on-the-object-sysobjects-database-mssqlsyst by cc-by-sa and MIT license