sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server ejecutando versiones antiguas de procedimientos almacenados

Según el código de proceso almacenado y la información adicional que vemos en EDIT2 sabemos que:

  1. Se está llamando a BULK INSERT
  2. "el usuario todavía recibió el error de no tener acceso a BULK INSERT pero todos los demás recibieron el error que estábamos generando"

Ciertas funciones de T-SQL (por ejemplo, OPENQUERY, OPENROWSET, BULK INSERT , etc) hacer pre-validación de seguridad. Un Usuario debe tener permisos INSERTAR y ADMINISTRAR OPERACIONES BULK, y en algunos casos ALTER TABLE, para poder ejecutar BULK INSERT. Además, los permisos de NTFS/Active Directory para el usuario (si usa la autenticación de Windows) o la cuenta "Iniciar sesión como" del servicio de SQL Server (si usa la autenticación de SQL Server) se validarán para garantizar que el archivo sea legible.

La validación previa (o al menos lo que llamo "validación previa") ocurre cuando se llama al proceso almacenado (o función, etc.) y no cuando se ejecuta cada línea. Si ocurre un error en este punto, no se ejecutará ningún código en su Proc, incluido RAISERROR o INSERT en la tabla de registro.

Por lo tanto, la causa más probable del comportamiento que está viendo es que el usuario que tiene el problema carece de a) uno o más de los permisos requeridos de SQL Server, o b) los permisos NTFS apropiados, o c) todos los arriba.

Dado que el error se debió a que no tenía acceso a BULK INSERT, supongo que a este usuario en particular le faltan uno o más permisos de SQL Server.