2011-10-10 9 views
13

Uso asp.net 4 C# e entity framework 4 con MS SQL 2008. Sto provando a configurare la mia applicazione Web localmente utilizzando IIS 7.L'autorizzazione EXECUTE è stata negata sull'oggetto 'aspnet_CheckSchemaVersion', database 'XXX'

Per il mio sito Web ho un provider di appartenenza all'account che ha installato diverse tabelle e sproc nel mio db (aspnet_).

Esecuzione dello script che riceviamo questo errore:

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.  at System.Data.SqlClient.SqlConnection.OnError 
  • Come posso risolvere il problema? Per favore forniscimi istruzioni chiare. Grazie per il tuo HEP su questo.
+4

sei un nobile? Penso che tu intendessi noob, ma quello è un errore di commedia. –

+0

Ho risposto qui: http://stackoverflow.com/questions/16134262/execute-permission-denied-aspnet-roles-roleexists?answertab=active#tab-top –

risposta

23

Ci dovrebbero essere alcuni ruoli db relativi alle tabelle di appartenenza, ad es. Aspnet_profile_fullaccess. Assicurati che l'account che stai utilizzando sia membro del ruolo appropriato.

NON si deve assegnare all'utente il collegamento al DB come privilegio di dbowner. L'account dovrebbe avere solo i diritti di cui ha bisogno & niente di più. Se si concede a dbo & qualcuno dovesse sfruttare un difetto nel proprio sito Web, avrebbe accesso pieno e incontrollato all'intero db a ciò che desiderava: eliminare tabelle, modificare i dati a proprio piacimento.

+0

grazie Simone ho letto attentamente la tua risposta e sono d'accordo con te. – GibboK

+2

L'utente con cui mi sto collegando ha tutti i ruoli aspnet_ * assegnati a loro e sto ancora ricevendo questo messaggio di errore. L'unico modo in cui sembra funzionare è se aggiungo il ruolo di dbowner. Qualunque cosa tu sappia potrebbe causare questo? – ajbeaven

+1

Potrebbe essere necessario eseguire lo strumento di registrazione SQL Server ASP.NET: http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx – arni

1

Il problema è che l'ID utente con cui l'applicazione si sta collegando non dispone di privilegi sufficienti nel database. È necessario che sia il proprietario del database o le autorizzazioni concesse su tutte le procedure memorizzate da aspnet_.

Quindi verificare le autorizzazioni in SQL Server 2008 per questo particolare utente. e se possibile rendere questo utente come un dbowner.

Spero che questo aiuti ...

Edit: Volevo che renderlo il più dbowner solo per verificare che ci sono alcuni problemi di autorizzazione, una volta che siete sicuri circa il problema, è possibile assegnare autorizzazioni a quello utente. quindi conoscendo la causa esatta e la soluzione esatta.

+1

Votato per il suggerimento di rendere l'utente un dbowner. So che l'hai qualificato nella tua modifica, ma so quanto basta per sapere che questa affermazione potrebbe essere pericolosa. – awrigley

0

Non penso che dovresti rendere l'utente il db_owner. Ho avuto lo stesso problema ed è stato sufficiente assegnare i 4 ruoli con BasicAccess al mio utente + per dargli il permesso EXECUTE su tutti i proc memorizzati:

GRANT EXECUTE SU [theUserName];

So che questo non è l'ideale. Si dovrebbero concedere autorizzazioni EXECUTE solo sul proc memorizzato richiesto, ma se si ha bisogno di una soluzione rapida finché non si trova quale SP deve essere in grado di eseguire l'utente, questo dovrebbe funzionare.

Problemi correlati