2012-12-24 3 views
4

안녕하세요 모두 여러 개체에 대해 사용자에게 실행 권한을 추가하고 싶습니다. 하지만 내 코드에 와일드 카드를 추가 할 수 없습니다.여러 개체에서 SQL grant 실행

GRANT EXECUTE ON OBJECT::dbo.CREATESERVERSESSIONS TO [domain\user]; 

이 작동하지만 지금 내가 원하는 XU_

GRANT EXECUTE ON OBJECT::dbo.XU_* TO [domain\user]; 

로 시작하지만이 작동하지 않는 모든 저장 프로 시저 실행을 부여 XU_ 시작 저장 프로 시저를 많이 가지고있다. 나는 누군가가 이것에 대한 해결책을 알고 있기를 바랍니다. 미리 감사드립니다.

+1

당신은 와일드 카드를 사용할 수 없습니다 - 당신은 ** ** 모든 ** 객체 (또는 스키마의 모든 객체)를 부여하려면 - 또는 모든 객체를 하나씩 나열해야합니다. –

+0

아, 그럴 겁니다.하지만 대답은 괜찮습니다. – Chino

답변

6

와일드 카드를 사용할 수 없습니다. 모든 개체 (또는 스키마의 모든 개체) 중 하나를 부여해야합니다. 그렇지 않으면 모든 개체를 하나씩 나열해야합니다. 당신이 할 수있는 무엇

이 같은 것입니다 - SQL 서버는 당신을 위해 그 문을 생성 한 :

SELECT 
    p.Name, 
    GrantCmd = 'GRANT EXECUTE ON OBJECT::' + p.name + ' TO [domain\user]' 
FROM sys.procedures p 
WHERE p.Name LIKE 'XU%' 

이 쿼리는 XU로 시작하는 모든 절차를 나열하고 그에 대한 GRANT EXECUTE ON .... 문을 포함하는 열을 생성합니다 순서.

SQL Server Management Studio에서이 작업을 실행 한 다음 결과로 표시되는 GrantCmd 열을 복사하여 새 창에 붙여 넣은 다음 실행하십시오.

그리고 당신은 정말이를 자동화하려는 경우, 당신은 또한 커서로이 쿼리를 설정하고 자동으로 그 결과 GrantCmd 문을 실행하는 동적 SQL을 사용할 수 있습니다 ....

+0

감사합니다. 잘 작동합니다 :) – Chino

+1

간단하지만 훌륭합니다. – 5arx