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

SQL Server che esegue versioni precedenti di stored procedure

Basato sul codice Stored Proc e informazioni aggiuntive che vediamo in EDIT2 lo sappiamo:

  1. È stato chiamato BULK INSERT
  2. "l'utente ha ancora ricevuto l'errore di non avere accesso a BULK INSERT ma tutti gli altri hanno ricevuto l'errore che stavamo sollevando"

Alcune funzioni T-SQL (ad es. OPENQUERY, OPENROWSET, BULK INSERT , ecc.) esegue la pre-convalida sulla sicurezza. Un Utente deve disporre delle autorizzazioni INSERT e AMMINISTRA BULK OPERATIONS, e in alcuni casi ALTER TABLE, per eseguire BULK INSERT. Inoltre, le autorizzazioni NTFS/Active Directory per l'utente (se si utilizza l'autenticazione di Windows) o l'account "Accedi come" del servizio SQL Server (se si utilizza l'autenticazione di SQL Server) verranno convalidate per garantire che il file sia leggibile.

La pre-convalida (o almeno quella che chiamo "pre-convalida") si verifica quando viene chiamato Stored Proc (o Function, ecc.) e non quando viene eseguita ogni riga. Se a questo punto si verifica un errore, non verrà eseguito alcun codice nel tuo Proc, incluso RAISERROR o INSERT nella tabella di registro.

Pertanto, la causa più probabile del comportamento visualizzato è che l'utente che presenta il problema non dispone di a) una o più delle autorizzazioni SQL Server richieste oppure b) le autorizzazioni NTFS appropriate oppure c) tutte le sopra.

Dato che l'errore riguardava il mancato accesso a BULK INSERT, suppongo che a questo particolare utente manchi una o più autorizzazioni di SQL Server.