답변:
이 때문에 코멘트 너무 길고해서 대답으로이 게시 됩니다 곧 다른 사용자와 관련.
SQL Server 2014에는 이러한 유형의 시나리오를 정확하게 지원하는 몇 가지 새로운 서버 수준 권한이 추가되었습니다. 감사를 염두에두고 설계되었지만 이러한 유형의 요구 사항도 해당 청구서에 맞는 것으로 보입니다. 서버 수준 로그인에 다음 두 가지 권한을 간단히 추가 할 수 있습니다.
CONNECT ANY DATABASE
SELECT ALL USER SECURABLES
전자는 소리가 들리 듯이 로그인을 모든 데이터베이스에 연결할 수 있습니다. 이것에 대한 좋은 점은 미래에 생성되는 데이터베이스에서도 가능하다는 것입니다 (명시 적 거부를 설정하지 않은 경우,이 권한이있는 로그인으로부터 특정 사용자 데이터베이스를 보호 할 수있는 방법입니다). 후자는 로그인이 액세스 할 수있는 모든 데이터베이스에서 읽기 작업을 수행 할 수있게합니다. 따라서 SELECT
테이블, 뷰, UDF 등에서 할 수는 있지만 UPDATE
작업 을 수행 할 수는 없습니다 (이 권한이 언제 이해되는지 테스트하지 않았습니다. 저장 프로시 저는 DML을 수행합니다). 조합이 작업 위대한 당신은 크게 벌리는 전체 서버에 대한 읽기 액세스를 로그인을 제공하기 위해, 또는 수있게하려면 더 세밀한 당신이 전통적인 부여 할 수 있습니다 CONNECT
특정 데이터베이스에 권한 및 SELECT ALL USER SECURABLES
권리 의지로그인이 명시 적으로 액세스 할 수있는 데이터베이스 에만 작동합니다.
2014 보안 변경 사항은 여기에 설명되어 있습니다 ; 아니라, 부분적으로 - 데이터베이스 수준 권한을 잊어 버렸습니다 ALTER ANY DATABASE EVENT SESSION
. 여기에는 관련이 없습니다.
서버 수준의 '모든 데이터베이스 읽기'권한이 없으며 서버 수준 역할에 데이터베이스 수준 권한을 부여 할 수 없습니다.
예, 사용자를 데이터베이스에 개별적으로 매핑해야합니다. Active Directory를 사용하는 경우 Windows 그룹을 생성 한 다음 해당 그룹에 SQL Server에 로그인 한 다음 해당 그룹의 모든 데이터베이스에 db_datareader를 적용하십시오 (각 데이터베이스에서 사용자를 작성해야 함).