Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Erro ao executar Insert e update usando Linked Server


poterman

Pergunta

Boa tarde a todos,

Pessoal, sempre usei Linked Server para comunicação entre dois servidores, porém estou com uma situação que até o momento não havia ocorrido.

Criei um Linked Server em um Servidor A apontando para um Servidor B, quando eu executo um select ou um delete o comando é executado normalmente, porém quando tento fazer um insert ou um update, aparece a seguinte mensagem de erro:

EM CASO DE INSERT

OLE DB provider "MSDASQL" for linked server "WEBDOR" returned message "[Microsoft][ODBC SQL Server Driver]

[SQL Server]Could not find server 'SERVIDOR' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.".
Msg 7343, Level 16, State 2, Line 1
The OLE DB provider "MSDASQL" for linked server "WEBDOR" could not INSERT INTO table "[WEBDOR].[DBDOR].[DBO].[WVENDEDOR]".

EM CASO DE UPDATE

OLE DB provider "MSDASQL" for linked server "WEBDOR" returned message "[Microsoft][ODBC SQL Server Driver][SQL Server]Could not find server 'SERVIDOR' in sys.servers. Verify that the correct server name was specified. If necessary, execute the stored procedure sp_addlinkedserver to add the server to sys.servers.".
Msg 7343, Level 16, State 4, Line 1
The OLE DB provider "MSDASQL" for linked server "WEBDOR" could not UPDATE table "[WEBDOR].[DBDOR].[DBO].[WVENDEDOR]".

Para exemplificar o update, estou executando um comando simples que sempre funcionou em todos os outros servidores que configurei:

UPDATE WEBDOR.DBDOR.DBO.WVENDEDOR SET UPDREGISTRO = '2011-05-05'

É como se o usuário não tivesse permissão para estes comandos, porém se eu estiver logado com o usuário e executar o comando local, sem o uso do Linked Server, o UPDATE ou INSERT ocorre normalmente.

Espero que alguém já tenha se deparado com esta situação para me dar uma ajuda, pois não sei masi o que olhar, ainda mais porque fiz a mesma configuração de sempre e desta vez cai na exceção de não funcionar.

Abraços a todos e espero que alguém ajude na minha duvida e até existir um tópico sobre isso para ajudar os outros, porque não dei a sorte de achar.

Editado por poterman
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Poterman,

Qual a versão do sql q está utilizando? Eu prefiro utilizar o OpenQuery....

você já relatou, mas verifique as pesmissões do linked server. Mesmo logado com o usuário, o linked pode estar com outras parametrizações.

Tente com o OpenQuery. Ex.:

select * from openquery (NomeLinkedServer, 'select * from .... ')

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde Fulvio,

Obrigado pelo retorno,

Então, estou usando o SQL Express 2005 em ambos os servidores, apenas para complementar o que tinha passado, usando o Linked Server eu consigo fazer normalmente um DELETE ou SELECT seja ele usando JOIN o fazendo direto, o prblema ocorre apenas quando vou fazer um INSERT e o UPDATE, a conexão do Linked Server estou fazendo usando o usuário SA do SQL, porém já tentei com outro usuário que criei que tem permissão total e a mesma situação ocorre.

Achei que poderia ser algo em relação a permissão, mas por estar usando o próprio SA, não entendi o porque desta vez esta situação ocorreu.

Já revirei alguma configuração que pudesse estar interferindo nisso mas não ví nada de diferente relacionado ao Linked Server, apenas permissões para o usuário.

Desde já agradeço a força e espero uma luz com a ajuda de vocês..

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

você consegue "ver" a máquina onde estão os dados (ping) pela máquina onde está o sql?

Ainda acho que seja permissão de gravação, pois o problema está no INSERT e no UPDATE. Verifique se o usuário tem permissão de gravar no outro banco.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi Fulvio,

Eu consigo fazer um ping e acessar normalmente o outro servidor via rede.

A permissão do usuário eu descarto porque além de ser o usuário SA, eu consigo usar o usuário SA direto no servidor B (Destino do Linked Server) fazer todas as operações de UPDATE, INSERT, SELECT e DELETE.

Tentei encontrar alguma configuração específica para Linked Server para determinar qual o tipo de permissão que se tem mas não encontrei nada, o mais próximo foi apenas a configuração do usuário mesmo, mas como comentei antes já usei até o usuário SA para ter certeza que teria todas as permissões para esta execução e mesmo assim dá o mesmo erro, além de que usando este mesmo usuário local no servidor B a situação não ocorre.

Até hoje em todas as configurações que fiz funcionaram corretamente mas desta vez fui pego de surpresa e para ajudar, não estou achando nenhuma outra configuração que pudesse influenciar nisso.

Fulvio, vê se você consegue uma luz aí para me ajudar, não achei nada parecido nem no google, a coisa está complicada, só espero que a solução não seja o antigo comando do DOS... FORMAT.. rssss

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Quando você abre as propriedades do linked, na aba Security qual o login remoto que utiliza? você cria um específico para o linked?

Se não utilizar um específico, crie um e faça as configurações do linked para este login (acessos, permissões, tudo). Aí faça os teste novamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Então Fulvio, eu usei 3 usuários para teste:

O SA que possui permissão total

O usuário uSncSite que é o que criei com permissão total

E o usuário umodelo, que era um usuário que já existia e é usado para trabalhar com o banco de dados, tanto para ler informações quanto para gravar os dados.

A configuração dos usuários estou fazendo no "Be made use this security context", eu não uso a configuração de mapeamento.

A criação do meu Linked Server eu faço da seguinte forma:

--Link
EXEC sp_addlinkedserver @server='WEBDOR', @srvproduct='',
    @provider='MSDASQL', @provstr = 'DRIVER={SQL Server};SERVER=SERVIDOR;UID=;PWD=;', @catalog = 'DbDor2'

--mapeamento de login - todas as conexões serão mapeadas para sa
EXEC sp_addlinkedsrvlogin 'WEBDOR', 'false', NULL, 'sa', 'senhadosa'

--habilita RPC e RPC OUT
EXEC sp_serveroption 'WEBDOR', 'RPC out', 'true'
EXEC sp_serveroption 'WEBDOR', 'RPC', 'true'

Este código sempre utilizei normalmente, tanto com o SQL2000, SQL Server 2005, SQL Server Express (2005) e como o usuário SA é o que tem a permissão "Administrativa" do SQL em teoria usando ele eu não teria nenhuma restrição em relação a permissões.

Editado por poterman
Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, infelizmente ninguém nseguiu me ajudar nesta situação, mas após ralar muito tentando descobrir o que podia estar causando este problema, felizmente consegui descrobrir o motivo, e lógico que vou compartilhar para que outros que tenham este mesmo problema não ralem como eu para achar a solução já que não achei em nenhum forum a solução.

O problema ocorria devido o servidor estar com um nome, porém quando foi instalado o SQL ele estava com outro nome.

O nome do Servidor por ser verificado com o comando

SELECT @@servername
Será retornado qual o nome que o SQL está usando para a Instância Caso o nome esteja incorreto com o nomediferente do servidor, execute os seguintes passos
SELECT @@servername
Executar:
sp_dropserver 'ANTIGO_NOME\ANTIGA_INSTANCIA'
GO
sp_addserver 'NOVO_NOME\NOVA_INSTANCIA', local
GO
Reiniciar a instância e verificar se o nome do server ficou correto utilizando
SELECT @@servername.

Forte abraço a todos.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...