Inserção em massa através da rede


13

Alguém pode me ajudar com isso?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)

O erro mostra, não foi possível abrir:

Não foi possível inserir em massa porque o arquivo '\ SERVERNAME \ FOLDERNAME \ textFile.txt' não pôde ser aberto. Código de erro do sistema operacional 5 (acesso negado.)

O caminho está em outro computador na rede.


8
A conta em que o SQL Server está sendo executado tem permissão para acessar '\\COMPUTER01\FOLDER01\TextFile.txt'? Observe que a conta geralmente será diferente da sua conta.
Damien_The_Unbeliever

3
Você também pode adicionar o erro exato que recebe?
ypercubeᵀᴹ

além de @Damien_The_Unbeliever: "Para especificar um arquivo de dados compartilhado, use seu nome convenção de nomenclatura universal (UNC), que assume a forma geral, \\ Servername \ Sharename \ Path \ Filename"
JoseTeixeira

@ypercube - Não foi possível inserir em massa porque o arquivo '\\ SERVERNAME \ FOLDERNAME \ textFile.txt' não pôde ser aberto. Código de erro do sistema operacional 5 (acesso negado.). obrigado senhor
Jonas Ivy V. imperial

Eu tenho o mesmo problema usando o mesmo domínio e domínio cruzado (código de erro do sistema operacional 5 (acesso negado.)). Curiosamente, se eu usar o XP_CMDSHELL para testar se o arquivo existe ou posso movê-lo, mas a inserção em massa gera acesso negado. A conta do serviço sql e a conta do meu windows têm permissões para a pasta.

Respostas:


14

Vou dar um salto de fé e supor que você se conecte ao SQL Server usando a Autenticação do Windows. Nesse caso, você tem um salto duplo do Kerberos: um salto é o aplicativo cliente conectado ao SQL Server, um segundo salto é o SQL Server conectado ao controle remoto \\COMPUTER01. Esse salto duplo cai sob as restrições da Delegação Restrita e você acaba acessando o compartilhamento como Login Anônimo e, portanto, o Acesso Negado.

Para corrigir o problema, você precisa habilitar a delegação restrita para a conta de serviço do SQL Server. Este blog Como: Inserir em massa do SQL Server com delegação restrita (acesso negado) tem um exemplo de como fazê-lo, e realmente espero que a etapa sobre como 'habilitar a delegação irrestrita' seja apenas um erro de digitação, pois a delegação irrestrita é simplesmente mal.

No caso em que eu pulei a arma e você estiver efetuando login no SQL Server usando a Autenticação do SQL, será necessário criar uma credencial para o logon do SQL e usá-la para acessar os recursos da rede. Veja CREATE CREDENTIAL.


1

Sql Server tentou abrir o arquivo, o servidor de arquivos disse "Acesso negado" porque a conta em que o SQL Server é executado não tem permissão para abrir o arquivo. Altere as configurações de segurança no arquivo de acordo e ele funcionará.


1

Eu executaria o script em um logon do SQL (com permissão bulkadmin) e deixaria a permissão na pasta de rede autenticar na conta de serviço do SQL ou na conta do SQL Server Agent.


-2

Vou lhe dizer o que funciona para mim toda vez que receber essa mensagem. Eu abro o arquivo CSV como um texto em um bloco de notas e excluo todas as linhas de espaço no arquivo, não consigo ver essas linhas em branco no arquivo do Excel. Geralmente é apenas a última linha que parece aparecer, mesmo que esteja vazia


Tem certeza de que é o mesmo erro?
Dezso

Isso não tem nada a ver com erros de acesso negado. Isso corrige apenas erros de formato de arquivo.
Julien Vavasseur
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.