sql >> Databáze >  >> RDS >> Sqlserver

SQL Server se starými verzemi uložených procedur

Na základě kódu Stored Proc a dalších informací, které vidíme pod EDIT2 víme to:

  1. Probíhá volání BULK INSERT
  2. "uživatel stále dostal chybu, že nemá přístup k BULK INSERT, ale všichni ostatní dostali chybu, kterou jsme upozorňovali"

Některé funkce T-SQL (např. OPENQUERY, OPENROWSET, BULK INSERT atd.) proveďte předběžné ověření bezpečnosti. Aby uživatel mohl provést HROMADNÉ VLOŽENÍ, musí mít oprávnění INSERT a ADMINISTER BULK OPERATIONS a v některých případech také ALTER TABLE. Navíc budou ověřena oprávnění NTFS / Active Directory pro uživatele (pokud používáte ověřování Windows) nebo účet "Přihlásit se jako" služby SQL Server (pokud používáte ověřování serveru SQL), aby bylo zajištěno, že je soubor čitelný.

Předběžná validace (nebo alespoň to, co nazývám "předběžná validace") nastává, když je volán uložený proces (nebo funkce atd.), a nikoli při provádění každého řádku. Pokud v tomto okamžiku dojde k chybě, nebude proveden žádný kód ve vašem Proc, včetně RAISERROR nebo INSERT do tabulky protokolu.

Nejpravděpodobnější příčinou chování, které vidíte, je tedy to, že uživateli, který má problém, chybí buď a) jedno nebo více požadovaných oprávnění SQL Server, nebo b) příslušná oprávnění NTFS, nebo c) všechna výše.

Vzhledem k tomu, že chyba spočívala v tom, že neměl přístup k BULK INSERT, odhaduji, že tomuto konkrétnímu uživateli chybí jedno nebo více oprávnění SQL Server.



  1. Jak vymazat frontu v Oracle AQ

  2. Rozdíl mezi strukturou dvou tabulek

  3. Jak změnit prioritu pro souběžný program

  4. SQL dotaz na více databází