2016-06-04 3 views
2

Ich benutze SSMS 10.50 für den Zugriff auf SQL Server 2008 R2 und Ich bin sehr neu in SQL-Codierung. Meine Login-ID ist SA. Ich habe eine gespeicherte Prozedur erstellt und möchte sie für bestimmte Benutzer ausführbar machen. Aber ich versage es.Wie Sie eine gespeicherte Prozedur für einen bestimmten Benutzer zugänglich machen

Wenn ich diese Zeile schreiben,

create proc GetCustomerDetailsCompanyWise 
    (@comp varchar(40)) 
as 
begin 
    grant execute on GetCustomerDetailsCompanyWise to [sgp\deepak.b] 
    execute AS USER='sgp\deepak.b'; 

    select * 
    from DD_Customer 
    where Company = @comp; 
end 

exec GetCustomerDetailsCompanyWise 'Google' 

ich diesen Fehler

Msg 916, Level 14, State 1, Procedure 
GetCustomerDetailsCompanyWise, Line 6 
The server principal "sgp\deepak.b" is not able to access the 
database "TEMP" under the current security context. 

Könnten Sie bitte erklären, was ich falsch gemacht haben und wie kann ich es beheben?

+0

Also, Sie möchten, dass dieser SP immer unter '[sgp \ deepak.b]' ausgeführt wird, egal wer den Start ausführt? – gofr1

+0

@ gofr1, Ja, das ist was ich will. – Deepak

Antwort

2

zuerst die Prozedur

create proc GetCustomerDetailsCompanyWise 
    (@comp varchar(40)) 
as 
begin 
    select * 
    from DD_Customer 
    where Company = @comp; 
end 
go 

Dann erteilen Sie Berechtigungen

grant execute on GetCustomerDetailsCompanyWise to [sgp\deepak.b]; 
go 

Dann erstellen Sie versuchen, sie auszuführen.

0

Fügen Sie REVERT; vor dem end hinzu, um zum vorherigen Benutzerstatus zurückzukehren. Dann entfernen Sie grant Anweisung von SP. Dann erstelle SP. Dann folgendes ausführen:

grant connect on TEMP to [sgp\deepak.b]; 
grant select on TEMP to [sgp\deepak.b]; 
grant execute on GetCustomerDetailsCompanyWise to [sgp\deepak.b]; 
Verwandte Themen