2009-12-03 1 views
0

J'ai créé une application pour utiliser SQL SMO pour rechercher tous les serveurs SQL, bases de données, travaux et résultats de travaux. Cette application est exécutée via une tâche planifiée à l'aide d'un compte de service local. Ce compte de service est local uniquement sur le serveur d'applications et n'est présent dans aucun serveur SQL Server à inspecter. Je rencontre des problèmes pour obtenir des informations sur les résultats d'un travail et d'un travail lors de la connexion aux serveurs à l'aide d'un utilisateur disposant des droits dbReader sur les tables système. Si nous configurons l'utilisateur sur sysadmin sur le serveur, tout fonctionne correctement.Droits minimum pour lire des travaux SQL à l'aide de SQL SMO

Ma question est la suivante: Quels sont les privilèges minimum qu'un utilisateur SQL Server local doit avoir pour se connecter au serveur et inspecter les travaux/résultats de travail à l'aide de l'API SQL SMO?

je me connecte à chaque serveur SQL en procédant comme suit:

var conn = new ServerConnection 
     { 
     LoginSecure = false, 
     ApplicationName = "SQL Inspector", 
     ServerInstance = serverInstanceName, 
     ConnectAsUser = false, 
     Login = user, 
     Password = password 
     }; 
var smoServer = new Server (conn); 

Je lis les emplois en lisant smoServer.JobServer.Jobs et lire la propriété JobSteps sur chacun de ces emplois.

La variable serveur est de type Microsoft.SqlServer.Management.Smo.Server. utilisateur/mot de passe sont de l'utilisateur trouvé dans chaque SQL Server à inspecter. Si "user" est SysAdmin sur le serveur SQL Server à inspecter, tout fonctionne correctement, et si nous définissons ConnectAsUser sur true et que nous exécutons la tâche planifiée en utilisant mes propres informations d'identification, ce qui me confère des privilèges SysAdmin sur SQL Server par mes Adhésion à Active Directory

Merci!

Répondre

1

Juste été par moi-même. De SQL Books en ligne, voici ce que j'ai découvert ...

Pour obtenir ou définir les propriétés d'objet d'emplois, utilisateurs doit être membre du rôle de base de données SQLAgentUserRole sur la base de données MSDB , ou être le propriétaire du travail , ou être membre du rôle serveur fixe sysadmin .

Pour créer un emploi, les utilisateurs doivent être membres du SQLAgentUserRole, SQLAgentReaderRole et rôles de base de données SQLAgentOperatorRole sur la base de données MSDB, ou être membre de le rôle de serveur fixe sysadmin.

Pour laisser tomber un emploi, les utilisateurs doivent être membres du rôle de base de données SQLAgentUserRole sur la base de données MSDB, ou être le propriétaire du travail, ou être un membre du rôle de serveur fixe sysadmin.

Questions connexes