Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server, работещ със стари версии на съхранени процедури

Въз основа на съхранения код на процедура и допълнителна информация, която виждаме под EDIT2 знаем, че:

  1. Извиква се BULK INSERT
  2. "потребителят все още получи грешката, че няма достъп до 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да конфигурирам SQL Native Client с powershell?

  2. Създаване на потребител, който може да ВИЖДА само една база данни и да избира само от нея?

  3. Защо не използвате varchar(max)?

  4. Как връщате имената на колоните на таблица?

  5. Как да коригирате „Заявката COMMIT TRANSACTION няма съответна BEGIN TRANSACTION“ в SQL Server