2009-10-21 30 views

Respuesta

4

Ok, esto es lo que sucedió. Hubo un personaje especial antes del final del SP, por lo que estaba incompleto y aún así era válido, de alguna manera.

Para poder 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í!

1

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.

+0

La aplicación web se hace pasar por un usuario de dominio que tiene acceso al proceso almacenado. Este es el caso para todos los demás procesos almacenados utilizados en el sistema (en exceso de otros 250). Y solo este está dando el problema. Intenté volver a asignar los permisos sin éxito. –

0

Utilice siempre el dbo. (u otro esquema) prefijo tanto al crear como al acceder a objetos.

escribí sobre este tema muy recientemente:

http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/11/bad-habits-to-kick-avoiding-the-schema-prefix.aspx

+0

El proceso almacenado se creó con el prefijo de esquema dbo y lo estoy accediendo a través de Microsoft Application Block, ¿esto cuenta? –

+0

Disculpe, no sé qué es un "Bloque de aplicaciones de Microsoft". ¿Hay alguna manera de decirle que llame "dbo.ProcedureName" en lugar de simplemente "ProcedureName"? –

0

Así como otras respuestas sobre el esquema etc/seguridad:

  • ¿Tiene una DENY en ella en alguna parte?
  • nombres de objetos sensibles a mayúsculas y minúsculas y el uso de un nombre "incorrecto"?
  • ¿contexto incorrecto de la base de datos? por ejemplo, OtherDB.dbo.Myproc
2

Respuesta similar a la marcada: La última línea de mi procedimiento almacenado era 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 (realizó el cambio deseado) pero que me dio este error.

7

Descubrí que había dejado la palabra "IR" después de "FINALIZAR" en mi proceso almacenado. Alterar el Proc y volver a agregar GO solucionó este problema para mí.

2

Encuentro 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.

0

El uso del 'GO' me solucionó el problema también. 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ó.

0

En Microsoft SQL Server, seleccione el objeto en el explorador de objetos con el que desea trabajar, haga clic con el botón secundario y luego 'Script [object] as' puede darle la secuencia de comandos necesaria para realizar una operación sin problemas Obteniendo este error

-1

Si se ha asegurado de que el objeto existe y todavía está recibiendo un error de permisos, entonces puede necesitar ejecutar SQL Management Studio con privilegios administrativos. Eso debería darle los permisos necesarios para acceder al objeto.

Cuestiones relacionadas