sql >> Database >  >> RDS >> Sqlserver

SQL Server met oude versies van opgeslagen procedures

Gebaseerd op de Stored Proc-code en aanvullende informatie die we zien onder EDIT2 we weten dat:

  1. BULK INSERT wordt aangeroepen
  2. "de gebruiker kreeg nog steeds de foutmelding dat hij geen toegang had tot BULK INSERT, maar alle anderen kregen de fout die we aankaartten"

Bepaalde T-SQL-functies (bijv. OPENQUERY, OPENROWSET, BULK INSERT , etc) pre-validatie doen op beveiliging. Een gebruiker moet de machtigingen INSERT en ADMINISTER BULK OPERATIONS hebben, en in sommige gevallen ALTER TABLE, om BULK INSERT uit te voeren. Bovendien worden NTFS-/Active Directory-machtigingen voor de gebruiker (bij gebruik van Windows-verificatie) of het "Aanmelden als"-account van de SQL Server-service (bij gebruik van SQL Server-verificatie) gevalideerd om ervoor te zorgen dat het bestand leesbaar is.

Pre-validatie (of in ieder geval wat ik noem "pre-validatie") vindt plaats wanneer de Stored Proc (of Functie, enz.) wordt aangeroepen en niet als elke regel wordt uitgevoerd. Als er op dit punt een fout optreedt, wordt geen van de code in uw Proc uitgevoerd, inclusief de RAISERROR of de INSERT in de logtabel.

Daarom is de meest waarschijnlijke oorzaak van het gedrag dat u ziet, dat de gebruiker met het probleem ofwel a) een of meer van de vereiste SQL Server-machtigingen, of b) de juiste NTFS-machtigingen, of c) alle van de hierboven.

Aangezien de fout ging over het niet hebben van toegang tot BULK INSERT, vermoed ik dat deze specifieke gebruiker een of meer van de SQL Server-machtigingen mist.



  1. Postgres Slow groeperen op query met max

  2. Kan AWS RDS Postgres-tabel niet exporteren naar CSV in S3, met de functie aws_s3.query_export_to_s3

  3. Retourneer het aantal dagen in een maand in MariaDB

  4. IF... ELSE in WHERE-clausule MySQL