Въз основа на съхранения код на процедура и допълнителна информация, която виждаме под EDIT2 знаем, че:
- Извиква се BULK INSERT
- "потребителят все още получи грешката, че няма достъп до BULK INSERT, но всички останали получиха грешката, която повдигахме"
Определени T-SQL функции (напр. OPENQUERY, OPENROWSET, BULK INSERT и т.н.) направете предварително валидиране на сигурността. Потребителят трябва да има разрешения за INSERT и ADMINISTER BULK OPERATIONS, а в някои случаи и за ALTER TABLE, за да изпълни BULK INSERT. Освен това разрешенията за NTFS / Active Directory за потребителя (ако се използва удостоверяване на Windows) или акаунта „Влизане като“ на услугата SQL Server (ако се използва удостоверяване на SQL Server) ще бъдат валидирани, за да се гарантира, че файлът е четим.
Предварителното валидиране (или поне това, което аз наричам "предварително валидиране") се случва, когато се извиква съхранената процедура (или функция и т.н.), а не когато се изпълнява всеки ред. Ако в този момент възникне грешка, тогава нито един от кодовете във вашия Proc няма да бъде изпълнен, включително RAISERROR или INSERT в регистрационната таблица.
Следователно най-вероятната причина за поведението, което виждате, е, че потребителят, който има проблема, няма а) едно или повече от необходимите разрешения за SQL Server, или б) подходящите разрешения за NTFS, или в) всички по-горе.
Като се има предвид, че грешката беше за липсата на достъп до BULK INSERT, моето предположение е, че този конкретен потребител няма едно или повече от разрешенията на SQL Server.