2009-05-08 3 views
2

Ich möchte in der Lage sein, ein beliebiges SSIS-Paket über eine Webanwendung aufzurufen. Ich habe festgestellt, dass ich dies mit sp_start_job erfolgreich ausführen kann, wenn es auf meinem lokalen Rechner läuft. Allerdings, wenn ich zu unserem Test-Site zu veröffentlichen, die ich erhalten:So gewähren Sie Berechtigungen für SqlServer 2005-Systemprozeduren (z. B. sp_start_job)

The EXECUTE permission was denied on the object 'sp_start_job', database 'msdb', schema dbo' 

So habe ich versucht, diese

USE msdb 

CREATE USER [TheUser] FOR LOGIN [TheLogin] 
GO 

GRANT EXECUTE ON sp_start_job TO [TheUser] 
GO 

jedoch danach läuft, ich bin immer noch die Erlaubnis verweigert Fehler. Gibt es etwas Besonderes, um Berechtigungen für Systemprozeduren zu erteilen?

Edit: weiß nicht, ob es einen Unterschied macht oder nicht, aber der Webserver ist in einer DMZ, also verwende ich SQL Server-Authentifizierung, um zwischen Webserver und Datenbankserver zu kommunizieren.

Antwort

2

Von MSDN:

standardmäßig Mitglieder der Sysadmin festen Serverrolle kann diese gespeicherte Prozedur ausführen. Andere Benutzer müssen eine der folgenden SQL Server-Agent festen Datenbankrollen gewährt in die msdb-Datenbank:

* SQLAgentUserRole 
* SQLAgentReaderRole 
* SQLAgentOperatorRole 
+0

Danke für die Info. Die ersten beiden Rollen funktionierten nicht für mich, aber SQLAgentOperatorRole. Das einzige ist, dass es etwas mehr Berechtigungen hat, als ich möchte. Gibt es eine Möglichkeit, meine eigene Rolle zu erstellen, die * nur * die Berechtigung hat, den Job auszuführen? – Nathan

+0

Für andere, die es möglicherweise verpasst haben, sind dies Rollen in der Datenbank ** msdb **. – ps2goat