Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server executando versões antigas de procedimentos armazenados


Com base no código do Stored Proc e nas informações adicionais que vemos em EDIT2 nós sabemos isso:
  1. BULK INSERT está sendo chamado
  2. "o usuário ainda recebeu o erro de não ter acesso ao BULK INSERT, mas todos os outros receberam o erro que estávamos gerando"

Certas funções T-SQL (por exemplo, OPENQUERY, OPENROWSET, BULK INSERT , etc) fazer pré-validação na segurança. Um usuário deve ter permissões INSERT e ADMINISTER BULK OPERATIONS e, em alguns casos, ALTER TABLE, para executar BULK INSERT. Além disso, as permissões NTFS / Active Directory para o usuário (se estiver usando a autenticação do Windows) ou a conta "Log On As" do serviço SQL Server (se estiver usando a autenticação do SQL Server) serão validadas para garantir que o arquivo seja legível.

A pré-validação (ou pelo menos o que estou chamando de "pré-validação") ocorre quando o Stored Proc (ou Function, etc) é chamado e não quando cada linha é executada. Se ocorrer um erro neste ponto, nenhum código em seu Proc será executado, incluindo o RAISERROR ou o INSERT na tabela de log.

Portanto, a causa mais provável do comportamento que você está vendo é que o usuário que tem o problema não possui a) uma ou mais das permissões necessárias do SQL Server ou b) as permissões NTFS apropriadas ou c) todas as acima de.

Dado que o erro foi sobre não ter acesso ao BULK INSERT, meu palpite é que esse usuário específico está perdendo uma ou mais das permissões do SQL Server.