2011-04-07 4 views
1

이 저장 프로 시저를 사용하여 두 개의 내부 조인 (하나의 테이블 중 하나가 다른 데이터베이스에 있음)을 사용하여 선택 쿼리를 수행합니다. 자, 나는이 쿼리를 동적 인 원인으로 작성해야만했습니다. 우선 select 쿼리가 실행되어야하는 db를 찾아야했습니다. 어쨌든, 어떤 테이블도 데이터베이스 역할 "personel"(모든 사람 포함)에 대한 저장 프로 시저에 권한을 부여하는 데 대한 사용 권한이 없습니다.저장 프로 시저에서 실행중인 동적 쿼리에 대한 사용 권한 문제

이제 personel 역할을 가진 사람이이 저장된 proc을 실행하면 "SELECT 권한이 'tbl_table'데이터베이스, 'Db'개체, 스키마 'dbo'개체에서 거부되었습니다."라는 오류 메시지가 나타납니다. 스키마에는 차이가 없으며 정상적으로 실행되는 동일한 테이블을 사용하는 다른 procs가 있습니다.

동적 쿼리 (exec (Use DB; select ...))를 사용할 수 있습니까? 동적 인 것처럼 테이블에 대한 사용 권한도 부여해야합니다.

감사합니다.

답변

1

짧은 대답은 '예'입니다.

저장 프로 시저를 컴파일 할 때 저장 프로 시저를 만드는 사용자/로그인의 사용 권한이 검사됩니다. 다른 사람이 그것을 실행하면, 테이블을 읽을 수있는 능력은 더 이상 관련이 없지만 SP를 실행할 수 있습니다.

그러나 동적 코드를 실행할 때 테이블에 대한 사용 권한을 확인해야합니다. 이것은 실행중인 사용자의 권한이 검사되고 있음을 의미합니다.

+0

주셔서 감사합니다. 테이블에 사용 권한을 부여하거나 동적 쿼리를 일반적인 쿼리로 변경하는 것 사이를 결정해야합니다. – futile

1

예. 이것이 원인 일 수 있습니다. 설명과 가능한 해결책을 얻으려면 this을 읽으십시오.

+0

답변과 링크에 감사드립니다. 대답에 대해 – futile

관련 문제