programing

개체 'sysobjects', 데이터베이스 'mssqlssystem resource', 스키마 'sys'에 대한 SELECT 권한이 거부되었습니다.

megabox 2023. 7. 13. 20:48
반응형

개체 'sysobjects', 데이터베이스 'mssqlssystem resource', 스키마 'sys'에 대한 SELECT 권한이 거부되었습니다.

설정: SQL Server 2005 및 DotNetNuke 05.01.02.

이것은 제가 "dbo에서 *를 선택"한 DNN 모듈을 설치하려고 시도하면서 시작되었습니다.sysobjects"는 SQL 스크립트입니다.다음 오류로 인해 실패했습니다.

개체 'sysobjects', 데이터베이스 'mssqlssystem resource', 스키마 'sys'에 대한 SELECT 권한이 거부되었습니다.

SQL Server Management Studio를 통해 DNN 사용자 계정으로 데이터베이스에 로그인했는데 sysobjects 보기에서 SELECT를 수행하려고 하면 동일한 오류가 발생합니다.

해당 보기에 대한 DNN 사용자 계정의 명시적 SELECT 권한을 부여하려고 했습니다.Security -> Users -> DNNUserLogin -> 마우스 오른쪽 단추로 클릭 -> Properties -> Securityables로 이동하여 확인하면 아래로 스크롤하여 sys.sysobjects 보기를 찾아보면 이 사용자 계정에 dbo에 대한 명시적 권한이 있다고 표시됩니다.그리고 SELECT 확인란이 선택됩니다.그러나 시스템 개체 보기를 해당 DNN 사용자 계정으로 선택할 수 없습니다.

내가 뭘 잘못하고 있는 거지?어떻게 하면 이 일을 해낼 수 있을까요?

이것은 사용자가 거부 권한을 가지는 것에도 문제가 있었습니다. 저는 권한을 부여하기 위해 기본적으로 사용자에게 모든 권한을 부여했습니다.그리고 부정은 그것을 죽이는 것이었습니다.사용 권한을 제거하자마자 작동했습니다.

가 발생하여 했습니다.db_denydatawriter그리고.db_denydatreaderuser.DB 사용자입니다.이를 위해 로그인 >> 속성 >> 사용자 매핑 >> DB에서 해당 DB 사용자를 선택한 후 해당 DB 사용자 역할을 선택 취소합니다.바로 그거야!!

PUBLIC 역할에 대한 전체 권한을 제공하는 양호한 서버에서 이 코드를 실행합니다.출력을 복사하여 문제가 있는 서버에 붙여넣습니다.실행합니다.다시 로그인해 보십시오.그것이 우리의 문제를 해결했습니다.

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]

잘못된 것에 대한 가능성이 너무 많기 때문입니다.여기에 또 다른 가능성이 있습니다.저는 데이터베이스에서 제 역할을 설정한 것과 마주쳤습니다.(예: "관리자", "관리자", "데이터 입력", "고객", 각각의 제한 사항이 있음)데이터베이스에 사용자를 추가할 때(신뢰도가 높은 사용자) sysadmin으로 설정되었기 때문에 "Manager" 역할 이상만 사용할 수 있었습니다.또한 추가되는 사용자는 도메인 자격 증명을 사용하는 Windows 도메인 사용자입니다. (데이터베이스에 액세스할 수 있는 모든 사용자는 당사 도메인에 있어야 했지만 도메인의 모든 사용자가 데이터베이스에 액세스할 수 있는 것은 아닙니다.)

어쨌든, 이 작동 시스템이 갑자기 작동을 멈추었고 위와 유사한 오류 메시지가 표시되었습니다.제가 결국 해결한 것은 데이터베이스의 "공용" 역할에 대한 모든 권한을 검토한 후 제가 만든 모든 역할에 해당 권한을 추가하는 것이었습니다.모든 사용자가 추가할 수는 없지만(또는 "추가"할 수는 있지만 "추가"되지는 않을 것임) 모든 사용자가 "공개" 역할에 있어야 한다는 것을 알고 있습니다.

그래서 "SQL Server Management Studio"에서 애플리케이션의 데이터베이스, 즉 <> 괄호 안에 현지화된 이름이 가려져 있습니다. " (SQL Server - sa)"\데이터베이스\\보안\역할\데이터베이스 역할\public"입니다."public"을 마우스 오른쪽 단추로 클릭하고 "Properties"를 선택합니다."데이터베이스 역할 정보 - 공용" 대화상자에서 "보안" 페이지를 선택합니다.목록을 살펴보고 목록의 각 요소에 대해 SQL "Grant" 문을 작성하여 해당 권한을 다른 역할에 정확히 부여합니다.예를 들어, 스칼라 함수("dbo")가 있습니다."공개" 역할이 "실행" 권한을 가진 [fn_diagramobjects]"입니다.그래서 다음 행을 추가했습니다.

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

일단 "보안" 목록의 모든 요소에 대해 이 작업을 수행한 후에는 역할 표에서 모든 역할을 선택하는 커서의 루프를 잠시 동안 마무리했습니다.이렇게 하면 데이터베이스 역할에 대한 "공개" 역할의 모든 권한이 명시적으로 부여됩니다.그 시점에서 모든 사용자가 다시 작업을 수행하고 있었습니다("sysadmin" 액세스 권한을 제거한 후에도 상황을 파악하는 동안 임시 조치로 수행되었습니다).

데이터베이스 개체에 대한 쿼리를 수행하고 공개 역할을 선택하여 이를 수행하는 더 나은(더 우아한) 방법이 있을 것이라고 확신하지만, 약 30분 동안 조사한 후에, 저는 그것을 파악하지 못하고 있었기 때문에 그냥 브루트 포스 방식으로 했습니다.다른 사람에게 도움이 될 경우를 대비해서, 여기 제 코드가 있습니다.

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

시스템에 설치되면 "권한 부여 실행"만 하면 됩니다. (물론 데이터베이스 역할 이름이 포함된 "AppRoleName" 필드가 포함된 [RoleList] 테이블이 있습니다.)

그래서, 왜 모든 사용자들이 "공공" 역할을 잃었는지, 왜 그들에게 그것을 돌려주지 못했는지에 대한 의문이 남아 있습니다.SQL Server 2008 R2 업데이트의 일부였습니까?도메인과의 연결을 새로 고치기 위해 다른 스크립트를 실행하여 각 사용자를 삭제하고 다시 추가했기 때문입니까?자, 이것으로 현재로서는 문제가 해결되었습니다.

마지막 경고: 여기서 누락되거나 잘못된 부분이 없는지 확인하려면 이 작업을 실행하기 전에 시스템의 "공개" 역할을 확인해야 합니다.시스템이 다를 수 있습니다.

이것이 다른 사람에게 도움이 되기를 바랍니다.

누군가가 그들의 웹사이트에 대한 권한을 취소한 것처럼 보입니다.sys.configurations공공의 역할을 위하여또는 이 특정 사용자에 대한 이 보기에 대한 액세스가 거부되었습니다.또는 공용 역할이 에서 제거된 후 사용자가 생성된 경우sys.configurations테이블

제공하다SELECT공용 사용자에 대한 권한sys.configurations물건.

저는 보안상 로그인 사용자의 속성인 로그인을 참조하여 해결했습니다.그런 다음 사용자 매핑으로 이동하여 데이터베이스를 선택한 다음 db_datareader 및 db_datawriter 옵션을 선택합니다.

제 경우, 제 사이트는 공유 호스팅에서 호스팅되었으며 데이터베이스와 관련이 없는 리소스 사용량 초과로 인해 데이터베이스가 잠겼습니다. 호스팅 패널은 Plesk였습니다.

저의 경우, 데이터베이스에 대한 사용자 권한을 부여하는 것만으로 해결되었습니다.

따라서 데이터베이스를 마우스 오른쪽 버튼으로 클릭합니다. -> 속성 -> [왼쪽 메뉴] 사용 권한 -> 를 클릭한 후 백업 데이터베이스로 스크롤합니다. -> "허가"를 선택합니다.

언급URL : https://stackoverflow.com/questions/1473315/the-select-permission-was-denied-on-the-object-sysobjects-database-mssqlsyst

반응형