sql-server - permission - permisos stored procedure sql server
No se puede encontrar el objeto "XXX" porque no existe o no tiene permiso (10)
Recibo el siguiente error al llamar a un procedimiento almacenado:
No se puede encontrar el objeto "XXX" porque no existe o no tiene permiso.
Revisé la base de datos y el SP está allí con los permisos correctos, pero sigo recibiendo el error.
¿Alguna sugerencia?
Además de otras respuestas sobre esquema / seguridad, etc.
- ¿tienes NEGACIÓN en algún lado?
- nombres de objetos sensibles a mayúsculas y minúsculas y el nombre "incorrecto"?
- contexto de base de datos incorrecta? por ejemplo, OtherDB.dbo.Myproc
La cuenta que está utilizando al llamar al procedimiento almacenado no debe ser la misma cuenta que está utilizando para verificarla. Asegúrese de que la cuenta que está utilizando para ejecutar el sproc tenga acceso al objeto.
Siempre use el dbo. (u otro esquema) prefijo tanto al crear como al acceder a objetos.
Escribí sobre este mismo tema recientemente:
Ok, esto es lo que pasó. Hubo un personaje especial antes del final del SP, por lo que estaba incompleto y aún así era válido, de alguna manera.
Así que pude ver el SP y ver los permisos pero no pude ejecutarlo. Entonces para resolver el problema tuve que copiar el texto de SQL Management Studio y pegarlo en el Bloc de notas, luego eliminar el carácter especial, luego copiarlo y pegarlo nuevamente en SQL Management Studio y ejecutar el script alter.
¡Muy extraño cómo llegó el personaje allí!
Respuesta similar a la marcada: la última línea de mi procedimiento almacenado fue una línea que otorgaba permiso para que el procedimiento almacenado se ejecutara como el usuario apropiado, probablemente agregado allí cuando genere un script.
Quitando eso (o tal vez un personaje oculto adjunto) logró arreglarlo.
"XXX" era el nombre del procedimiento almacenado que llamé, con éxito (hizo el cambio deseado) pero que me dio este error.
Descubrí que había dejado la palabra "IR" después de "END" en mi proceso almacenado. Alterar el Proc y volver a agregar GO solucionó este problema para mí.
Me encuentro con este problema también. En mi caso, otorgué permiso de ejecución justo después de crear el procedimiento almacenado. Y no hay ''GO'' entre las dos declaraciones. Agregué GO, y funciona.
Usar el ''IR'' también me solucionó el problema. Esto me estaba volviendo loco, después de varias caídas y comprobar los permisos para los usuarios y el esquema, esto fue lo que finalmente ayudó.
En el servidor Microsoft SQL, seleccione el objeto en el explorador de objetos con el que desea trabajar, haga clic con el botón secundario y, a continuación, haga ''Script [object] as'' para darle la secuencia de comandos que necesita para realizar una operación sin obtener este error
Si se ha asegurado de que el objeto exista y aún reciba un error de permisos, es posible que necesite ejecutar SQL Management Studio con privilegios administrativos. Eso debería darle los permisos necesarios para acceder al objeto.