중화사전망 - 자전 검색 - 다른 사용자에게 절단 권한을 부여하는 방법
다른 사용자에게 절단 권한을 부여하는 방법
엔터프라이즈 애플리케이션 개발에는 SQL 서버의 중간 테이블이 아닌 비즈니스의 중간 테이블을 가리키는 중간 테이블 개념이 있습니다. 예를 들어, 대량의 데이터와 잦은 쿼리가 포함된 공식 테이블이 있으므로 이 테이블에 데이터를 자주 삽입하지 않을 것입니다. 이 테이블은 매우 크므로 레코드를 삽입하는 것이 느립니다. 이 경우 물리적 테이블을 준비 테이블로 구축해야 합니다. 그런 다음 비즈니스 논리 또는 시간 간격에 따라 준비 테이블의 데이터를 공식 테이블로 한 번에 가져온 다음 준비 테이블을 비우면 공식 테이블의 작동 빈도가 줄어듭니다. 임시 테이블의 효율성을 극대화하기 위해 임시 테이블을 비울 때 삭제를 권장하지 않으며 잘라내기를 제안합니다. 두 테이블의 차이는 바이두가 할 수 있습니다. 그러나 TRUNCATE 를 사용하면 권한 문제가 발생합니다. 사용자에게 충분한 권한이 없으면 SP 를 실행할 수 없습니다. 다음은 자세한 설명입니다. 현재 dbo 사용자로 로그인하여 다음 SP 를 생성하고 있습니다. CreateProcdbo 입니다. MyTruncateStrunctabledbo. 그런 다음 MyTabLego 는 dbo 를 조작할 권한이 없는 다른 사용자 SBO 로 로그인하여 이 SP 를 실행합니다. MyTable table 테이블, SQLServer 는 현재 사용자에게 dbo 를 조작할 권한이 없다고 보고합니다. 내 책상. SQL 에서 GRANT 문은 사용자에게 권한을 부여하는 데 사용될 수 있다는 것은 잘 알려져 있습니다. 예를 들어 사용자 [SBO] 에게 데이터베이스 객체 [dbo.mytruncate] 를 실행할 수 있는 권한을 부여합니다. BCFL 준비 테이블]. 그러나 GRANT 가 부여한 권한은 잘리지 않습니다. 테이블을 자르려면 ALTER 권한이 있어야 하지만 TRUNCATE 를 실행하기 위해 사용자에게 ALTER 권한을 부여할 필요는 없으며 일부 보안 문제가 발생할 수도 있습니다. TRUNCATE 에 필요한 최소 권한은 table_name 에 대한 ALTER 권한입니다. 기본적으로 TRUNCATETABLE 권한은 테이블 소유자, sysadmin 고정 서버 롤 멤버 및 db_owner 및 db_ddladmin 고정 데이터베이스 롤 멤버에 부여되며 권한을 이전할 수 없습니다. 사용자 정의 사용 권한 집합을 정의할 때 모듈에 실행 컨텍스트를 지정하는 것이 유용합니다. 예를 들어, TRUNCATETABLE 과 같은 일부 작업에는 권한이 부여되지 않습니다. TRUNCATETABLE 을 실행하려면 사용자가 지정된 테이블에 대해 ALTER 권한을 가지고 있어야 합니다. 사용자에게 테이블에 대한 ALTER 권한을 부여하는 것이 좋지 않을 수 있습니다. 사용자가 테이블을 자를 수 있는 능력을 초과하는 권한을 갖게 되기 때문입니다. 이 문제가 발생하면 SQL 에서 제공하는 EXECUTEAS 문을 사용하여 목표를 달성할 수 있습니다. 위 예에서는 dbo 사용자로 로그인하여 executesalfastruncatetabledbo 를 사용하여 또 다른 SP:createprocturetable 을 만들어 보겠습니다. 내 책상. 그런 다음 첫 번째 SP 를 다음 createprocdbo 로 변경했습니다. MyTruncateasexecdbo. 그런 다음 TruncatemyTableGo 를 선택하고 SBO 에게 저장된 프로시저 dbo 를 실행할 수 있는 권한을 부여합니다. 내 절단. [SBO] ok 에 execute on [dbo.mytruncate] 을 부여한 다음 이제 SBO 사용자로 로그인하여 저장 프로시저 dbo 가 제대로 실행되는지 확인합니다. 이 작은 묘수가 너를 도울 수 있기를 바란다. O_o