AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 314411
Accepted
MrVimes
MrVimes
Asked: 2022-07-15 04:47:12 +0800 CST2022-07-15 04:47:12 +0800 CST 2022-07-15 04:47:12 +0800 CST

Qualquer coisa, exceto pequenas consultas ODBC que falham em VPN de longa distância após o SQL Server Swap

  • 772

Recentemente, troquei os servidores de banco de dados (bancos de dados restaurados do antigo para o novo e depois troquei os IPs) ...

Antigo: Sql Server 2005, Windows Server 2003 Novo: Sql Server 2008, Windows Server 2012

Todos os processos que se conectam ao servidor (site dot net, PHP, vbscript, mssql) de uma VPN geograficamente próxima funcionam bem no novo servidor.

Mas temos uma VPN entre o servidor (UK) e um escritório satélite (KY USA) e um aplicativo de banco de dados em execução no Microsoft Access, e esse aplicativo está gerando um erro ao realizar consultas no novo servidor. O erro é....

Erro: ODBC--falha na chamada.

[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionRead (recv()). (#10054) [Microsoft][ODBC SQL Server Driver][DBNETLIB]Erro geral de rede. Verifique a documentação da sua rede. (#11)

Se eu tiver temporariamente esse aplicativo consultando o servidor antigo (alterando o arquivo hosts local) o erro não ocorre e tudo funciona.

Para ajudar na solução de problemas, criei um pequeno script ...

'ConString="Provider=SQLOLEDB;Data Source=172.17.201.11,1433;" & _
'   "OLE DB Services=-2;Initial Catalog=Perf;Network=DBMSSOCN;User Id=*;Password=*"

ConString="Provider=SQLOLEDB;Data Source=172.17.201.11,1433;" & _
    "Initial Catalog=Perf;Network=DBMSSOCN;User Id=*;Password=*"
    set conn = CreateObject("ADODB.Connection") 
    
Conn.connectiontimeout=500
Conn.commandtimeout=500
conn.open ConString

SCRIPTTIMEOUT = 1000

'sqlstring="SELECT top 100 ClientID FROM Clients"
sqlstring="SELECT top 1000 ClientID FROM Clients"
'sqlstring="SELECT ClientID FROM Clients"

'succeeds with top 100
'fails with top 1000 or no limit


set Rcount = Conn.Execute(sqlstring)

msgbox Rcount(0)

Rcount.Close
set Rcount = Nothing

set sqlstring = Nothing
Conn.Close
set Conn = Nothing

O script funciona se eu consultar 100 linhas. Se eu tentar 1000, ele falha todas as vezes (eu não tentei quantidades intermediárias, mas não vejo muito sentido em reduzi-lo)

O script funciona se eu mudar o endereço IP para o servidor antigo (todo o resto é o mesmo - mesma vpn, mesmo cliente, mesmo script)

O script e o aplicativo de acesso funcionam bem em todos os sentidos em uma VPN diferente (também no Reino Unido)

  • Eu vasculhei todas as configurações que posso encontrar em cada servidor (no MS SQL Studio, Configuration Manager, Network Settings) para tentar corresponder e experimentar configurações diferentes.
  • Eu parei e iniciei serviços
  • Eu pesquisei isso e tentei todas as sugestões que pude encontrar (perdi o controle, mas tentei adicionar OLE DB Services=-2. Tentei Encrypt=on(e desativei). Tentei Trusted_connection=on(e desativei). Tentei Pooling=on(e desativei). tentei especificar o nome da instância após o IP.

Ambos os servidores estão no mesmo rack físico, na mesma rede/sub-rede, conectados ao mesmo switch físico.

Antes de seguir o caminho de mexer nas configurações da VPN, trocar os fios (exigindo acesso ao DC), há algo que eu possa/deveria fazer/olhar no novo servidor para ajudar?

Edit: Se eu adicionar Packet Size=1024;à minha string de conexão, funciona! O problema é que ambos os servidores têm definido como 4096 por padrão, e o servidor antigo funciona bem com isso.

Editar 2 O acima funcionou para o meu script de teste, mas não para o aplicativo de acesso.

Espero encontrar uma solução alternativa que não exija uma alteração da cadeia de conexão porque isso será um aborrecimento (envolvendo o desenvolvedor do aplicativo de acesso)

sql-server-2008 sql-server-2005
  • 1 1 respostas
  • 88 Views

1 respostas

  • Voted
  1. Best Answer
    MrVimes
    2022-07-16T02:45:59+08:002022-07-16T02:45:59+08:00

    Não é minha solução ideal (como eu esperava evitar alterar as strings de conexão), mas resolvi isso no meu script de teste adicionando Packet Size=1024à string de conexão.

    Isso não funcionou para o aplicativo Access. No entanto, criei um pequeno aplicativo de acesso de teste e, ao fazer isso, consegui descobrir que a alteração não estava funcionando no aplicativo principal do Access porque a cadeia de conexão estava usando um driver e campos diferentes. Usando a mesma cadeia de conexão no aplicativo Access que eu estava usando no meu script de teste, funcionou.

    Portanto, parece que a Packet Size=1024configuração não é reconhecida ou é ignorada na string de conexão do seguinte formato ...

    DRIVER=SQL Server;SERVER=live-db-server,1433;Packet Size=1024;UID=xxx;PWD=xxx;
    APP=Microsoft Office 2016;DATABASE=Perf
    

    Mas funciona na cadeia de conexão alternativa ...

    Provider=SQLOLEDB;Data Source=live-db-server,1433;Packet Size=1024;
    Initial Catalog=Perf;Network=DBMSSOCN;User Id=****;Password=****
    
    • 0

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve