Estoy usando Sql Server 2008 y tengo un proceso que usa sp_executesql dentro. Sigo recibiendo el siguiente error al ejecutar el proceso a través de ASP.NET:obteniendo el error "select permission denied" cuando se usa sp_executesql en proc (Sql Server 2008)
El permiso SELECT fue denegado en el objeto 'MyTable', base de datos 'MyDatabase', esquema 'dbo'.
He investigado mucho sobre esto y la mayoría de las personas señalan el hecho de que debo otorgar permiso de selección en la tabla subyacente de la que lee mi consulta dinámica. Bueno, yo he hecho esto y todavía no parece trabajo:
select object_name(major_id) as object,
user_name(grantee_principal_id) as grantee,
user_name(grantor_principal_id) as grantor,
permission_name,
state_desc
from sys.database_permissions
where major_id = object_id('User') and
class = 1
Results: MyTable public dbo SELECT GRANT MyTable guest dbo SELECT GRANT MyTable myuser dbo SELECT GRANT MyTable NT AUTHORITY\NETWORK SERVICE dbo SELECT GRANT
Como se puede ver, me he vuelto una exageración en tratar de concesión de seleccionar en la tabla subyacente. Incluso he vuelto a escribir mi proceso para que solo haga referencia a MyTable en el sql dinámico. Incluso concedí permiso de "ejecución" a todos los usuarios anteriores en el proceso ... Sin suerte.
El "myuser" anterior es el nombre de usuario en mi conexión en el web.config.
¿Falta algo aquí?
Gracias! Dave
¿El procedimiento almacenado tiene un 'CON EXECUTE AS' definido? – Aaronaught
Sí ... lo probé con "MyUser", llamador, auto, propietario. ¿Hay otros que me estoy perdiendo? Lo curioso es que cuando uso MyUser, arroja el mismo error en la ventana de consulta de Management Studio (mientras que sin esto no) – Dave