2011-10-10 57 views
13

Utilizo asp.net 4 C# y entity framework 4 con MS SQL 2008. Estoy intentando configurar mi aplicación web localmente usando IIS 7.El permiso EXECUTE fue denegado en el objeto 'aspnet_CheckSchemaVersion', base de datos 'XXX'

Para mi sitio web, usuario el proveedor de membresía Asp que ha instalado diferentes tablas y sprocs en mi db (aspnet_).

Al ejecutar el script que recibimos este error:

The EXECUTE permission was denied on the object 'aspnet_CheckSchemaVersion', database 'XXX', schema 'dbo'.  at System.Data.SqlClient.SqlConnection.OnError 
  • ¿Cómo puedo resolver el problema? Por favor, dame instrucciones claras. Gracias por tu ayuda en esto.
+4

¿eres un nob? Creo que te refieres a novato, pero ese es un error de comedia. –

+0

Respondido aquí: http://stackoverflow.com/questions/16134262/execute-permission-denied-aspnet-roles-roleexists?answertab=active#tab-top –

Respuesta

23

Deben existir algunos roles de db relacionados con las tablas de miembros, por ejemplo, aspnet_profile_fullaccess. Asegúrese de que la cuenta que está utilizando sea miembro de la función adecuada.

NO debe asignar al usuario que se conecta a la base de datos como privilegio dbowner. La cuenta solo debe tener los derechos que necesita & nada más. Si concede dbo &, alguien explotara una falla en su sitio web, tendría acceso completo e incontrolado a su db completo a lo que deseaba: eliminar tablas, cambiar datos a voluntad.

+0

gracias Simone He leído atentamente su respuesta y estoy de acuerdo con usted. – GibboK

+2

El usuario con el que me estoy conectando tiene asignados todos los roles aspnet_ * y sigo recibiendo este mensaje de error. La única forma en que parece funcionar es si agrego el rol de dbowner. ¿Todo lo que sabes de eso estaría causando esto? – ajbeaven

+1

Es posible que deba ejecutar la herramienta de registro de SQL Server de ASP.NET: http://msdn.microsoft.com/en-us/library/ms229862(v=vs.100).aspx – arni

1

El problema es que el ID de usuario con el que la aplicación está iniciando sesión no tiene suficientes privilegios en la base de datos. Tiene que ser el propietario de la base de datos o se le deben otorgar permisos en todos los procedimientos almacenados aspnet_.

Por favor, compruebe los permisos en SQL Server 2008 para este usuario en particular. y si es posible, conviértalo en un dbowner.

Espero que esto ayude ...

Editar: quería que sea lo más dbowner sólo para verificar que hay algunos problemas de permisos, una vez que está seguro sobre el problema, puede asignar permisos a ese usuario. por lo tanto, conocer la causa exacta y la solución exacta.

+1

Votado por sugerencia para hacer que el usuario sea un dbowner. Sé que calificaste esto en tu edición, pero sé lo suficiente como para saber que esta declaración podría ser peligrosa. – awrigley

0

No creo que deba convertir al usuario en db_owner. Tuve el mismo problema, y ​​fue suficiente para ampliar los 4 roles con BasicAccess a mi usuario + para darle permiso de EJECUTAR en todos los procesos almacenados:

GRANT EJECUTAR A [elNombreUsuario];

Sé que esto no es ideal. Uno debe otorgar permisos EXECUTE solo en el proceso almacenado requerido, pero si necesita una solución rápida hasta que encuentre qué SP necesita que el usuario pueda ejecutar, esto debería funcionar.

Cuestiones relacionadas