Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server exécutant d'anciennes versions de procédures stockées

Basé sur le code Stored Proc et des informations supplémentaires que nous voyons sous EDIT2 nous savons que :

  1. BULK INSERT est appelé
  2. "l'utilisateur a toujours eu l'erreur de ne pas avoir accès à BULK INSERT mais tout le monde a eu l'erreur que nous signalions"

Certaines fonctions T-SQL (par exemple OPENQUERY, OPENROWSET, BULK INSERT , etc.) effectuer une pré-validation sur la sécurité. Un utilisateur doit disposer des autorisations INSERT et ADMINISTER BULK OPERATIONS, et dans certains cas ALTER TABLE, afin d'exécuter BULK INSERT. De plus, les autorisations NTFS/Active Directory pour l'utilisateur (si vous utilisez l'authentification Windows) ou le compte "Se connecter en tant que" du service SQL Server (si vous utilisez l'authentification SQL Server) seront validées pour garantir la lisibilité du fichier.

La pré-validation (ou du moins ce que j'appelle "pré-validation") se produit lorsque la procédure stockée (ou la fonction, etc.) est appelée et non lorsque chaque ligne est exécutée. Si une erreur se produit à ce stade, aucun code de votre Proc ne sera exécuté, y compris le RAISERROR ou l'INSERT dans la table de journal.

Par conséquent, la cause la plus probable du comportement que vous voyez est que l'utilisateur qui a le problème ne dispose pas a) d'une ou plusieurs des autorisations SQL Server requises, ou b) des autorisations NTFS appropriées, ou c) de toutes les ci-dessus.

Étant donné que l'erreur concernait le fait de ne pas avoir accès à BULK INSERT, je suppose qu'il manque une ou plusieurs des autorisations SQL Server à cet utilisateur particulier.