none
Demora em transações com linked server RRS feed

  • Pergunta

  • Boa tarde

     

    Tenho o seguinte cenário:

     

    Servidor SQL Server 2005 com uma database em modo compatibilidade com o SQL Server 2000. Nas estações tenho o SQL Server 2005 Express. As estações acessam a base do servidor para fazer uma cópia dos dados através de linked server.Tanto a base do servidor quanto a base da estação estão em modo compatibilidade SQL Server 2000. Antes que perguntes, não posso deixar de usar a base em modo de compatibilidade por enquanto.

     

    Problema:

     

    A cópia dos dados (transações de select no servidor e insert na estação) entre as duas bases ocorre de maneira normal e rápida quando as duas bases estão na mesma rede. Quando as bases estão conectadas através do link da operadora de telecom, a demora é exageradamente maior. No entanto, se eu utilizo o MSDE (SQL 2000) nas estações, o tempo de cópia e muito inferior. Com o 2005 Express é muito mais demorado, o que impossibilita a adoção deste servidor.

     

    Gostaria de saber se alguém já passou por este problema, o alguém pode me dar alguma dica do que pode estar aconetcendo.

     

    Obrigado.

    quarta-feira, 19 de setembro de 2007 20:11

Todas as Respostas

  •  

    Vc. quer dizer que o sql 2000 quando esta remoto e mais rapido que o 2005 ?, no uso de linked server. isso pode ocorrer por exemplo em bases migradas onde os indices e estatisticas nao sao recriados especialmente se vc. esta com o nivel de compatibilidade 8 no 2005. agora se o problema e a lentidao quanto vc. esta na WAN pode ser o tamanho do resultset que retorna no seu linnked server ser muito grande.

     

    nao sei se e isso qualquer coisa retorne.

     

    Abs

    quinta-feira, 20 de setembro de 2007 10:41
  • Carlos,

     

    Concordo com o Marcelo.

     

    Você esta utilizando algum tipo de query ad-hoc?

     

    quinta-feira, 20 de setembro de 2007 12:05
    Moderador
  • Pessoal desculpem a demora em responder, estive ausente por uns dias.

     

    Junior, estou usando uma ad-hoc query sim. Trata-se de um INSERT cujos valores sao obtidos por um SELECT, por exemplo:

     

    INSERT INTO [SERVER-REMOTO].[BASE-REMOTA].[DBO].[TABELA]([CAMPO]) SELECT [CAMPO] FROM

    [SERVIDOR-LOCAL].[BASE-LOCAL].[DBO].[TABELA] (NOLOCK)

     

    Vale lembrar que no meu caso, os dois servidores são o 2005 mas as bases estão trabalhando em modo compatibilidade com o 2000.

     

    Obrigado

     

    segunda-feira, 24 de setembro de 2007 15:36
  • cara um bom teste poderia ser, criar uma tabela de transferencia ou fazer um select into tabel from openquery ....

     

    e depois local fazer o insert na sua tabela.

     

    Abs;

     

    segunda-feira, 24 de setembro de 2007 16:32
  • Marcelo,

     

    Gostei da idéia de utilizar um table de transferência desta forma, fica mais fácil realizar os testes.

     

    segunda-feira, 24 de setembro de 2007 16:43
    Moderador
  • Marcelo, primeiramente obrigado peloa atenção.

     

    Quanto ao seu primeiro post nesta pergunta, o que disse é exatamete isso: quando as 2 bases são 2005 fica mais lento que se usar 2000 na estação e 2005 no servidor, ambas em modo compatibilidade 8.

     

    Os índices foram reconstruídos e eu creio que o problema possa ocorrer na rede interna também, porém, fica pouco perseptível por ser uma rede mais veloz que o link 256 da WAN.

     

    segunda-feira, 24 de setembro de 2007 16:45
  •  

    entao , esse eo teste, na realidade o processo de criar a tabela com o select into e mais rapido que um insert into por conta de nao checar constraints, e nem shcema de tabela depois de criado essa temporaira ou ate mesmo fixa vc. importa para a sua base de producao. um result set muito grande em um link de 256 vai ser + lento mesmo.

     

    Abs;

    segunda-feira, 24 de setembro de 2007 16:50
  • Vocês acham que o problema estar na ad-hoc query que faz o insert diretamente de outra tabela?

     

    segunda-feira, 24 de setembro de 2007 16:51
  • Mas problema com o tamanho do result set não faz muito sentido, visto que usando o MSDE (2000) o processo funciona corretamente e em boa velocidade, peson que pode ser alguma peculiaridade do 2005

     

    segunda-feira, 24 de setembro de 2007 16:53
  • Carlos,

     

    Analisando as informações que você postou, tudo esta indicando para esta situação, mas somente testando.

    segunda-feira, 24 de setembro de 2007 16:54
    Moderador
  • Junior,

     

    Mesmo que o procedimento sugerido por vocês seja mais rápido, será inviável implantá-lo na minha solução. Utilizamos um programa que faz a replicação dos dados através do insert com select.

     

    Já pensei que o problema estivesse no programa, mas a mesma query executada por ele eu rodei no Management Studio e o tempo foi equivalente.

     

    Obrigado pela atenção.

     

    segunda-feira, 24 de setembro de 2007 17:08