sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server, der kører gamle versioner af lagrede procedurer

Baseret på den lagrede proc-kode og yderligere oplysninger, som vi ser under EDIT2 vi ved det:

  1. BULK INSERT kaldes
  2. "brugeren fik stadig fejlen om ikke at have adgang til BULK INSERT, men alle andre fik den fejl, vi rejste"

Visse T-SQL-funktioner (f.eks. OPENQUERY, OPENROWSET, BULK INSERT osv.) udføre en forhåndsvalidering af sikkerhed. En bruger skal have INSERT og ADMINISTER BULK OPERATIONS tilladelser, og i nogle tilfælde ALTER TABLE, for at udføre BULK INSERT. Derudover vil NTFS / Active Directory-tilladelser for brugeren (hvis du bruger Windows-godkendelse) eller "Log på som"-kontoen for SQL Server-tjenesten (hvis du bruger SQL Server-godkendelse) valideres for at sikre, at filen er læsbar.

Forhåndsvalidering (eller i det mindste det, jeg kalder "forhåndsvalidering") sker, når den lagrede proc (eller funktion osv.) kaldes og ikke når hver linje udføres. Hvis der opstår en fejl på dette tidspunkt, vil ingen af ​​koden i din Proc blive eksekveret, inklusive RAISERROR eller INSERT i logtabellen.

Derfor er den mest sandsynlige årsag til den adfærd, du ser, at den bruger, der har problemet, mangler enten a) en eller flere af de nødvendige SQL Server-tilladelser, eller b) de relevante NTFS-tilladelser eller c) alle ovenfor.

I betragtning af at fejlen handlede om ikke at have adgang til BULK INSERT, er mit gæt, at netop denne bruger mangler en eller flere af SQL Server-tilladelserne.



  1. Sagsopgørelse med anden datatype

  2. Rækker til kommaseparerede værdier ved hjælp af XML-tag

  3. Sådan konverteres Blob-data i MYSQL til Android ImageView

  4. GUID:varchar(36) versus unik identifikator