Pergunta

Nós temos um servidor antigo Windows 2000 executando o SQL Server 2000 Standard Edition, SP3. Isto tem uma configuração de servidor vinculado para ligar a um Informix DB através de uma conexão ODBC. Para a maioria do ano, correndo OPENQUERY contra o servidor vinculado fino funciona sem qualquer problema. No entanto, a cada poucos meses esse servidor ligado falhar, e não funciona novamente até que o SQL Server é reiniciado. O erro que vemos no Enterprise Manager é o seguinte:

---------------------------
SQL Server Enterprise Manager
---------------------------
Error 7399: OLE DB provider 'UNKNOWN' reported an error.  

Memory allocation failure.]
Memory allocation failure.]
OLE DB error trace [OLE/DB Provider 'UNKNOWN' IDBSchemaRowset::GetRowset returned 0x80004005:   ].
---------------------------
OK   
---------------------------

Se eu tente executar qualquer consulta SQL contra o servidor vinculado no Query Analyzer, o erro relatado é o seguinte:

[OLE/DB provider returned message: Unspecified error]
OLE DB error trace [OLE/DB Provider 'MSDASQL'
IDBCreateCommand::CreateCommand returned 0x80004005:   ].
Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' reported an error.

Se eu aplicar os sinalizadores de rastreamento referenciados aqui eu fico um pouco mais detalhes:

OLE DB error trace [Non-interface error:  OLE DB provider MSDASQL
returned an incorrect value for DBPROP_CONCATNULLBEHAVIOR which should
be either DBPROPVAL_CB_NULL or DBPROPVAL_CB_NON_NULL].
[OLE/DB provider returned message: Unspecified error]
OLE DB error trace [OLE/DB Provider 'MSDASQL'
IDBCreateCommand::CreateCommand returned 0x80004005:   ].
Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDASQL' reported an error.

Algumas ideias sobre o que poderia causar isso? Nós não estamos cientes de quaisquer falhas no servidor ou alterações nas configurações, e uma reinicialização sempre parece para corrigir isso. O Informix DB parece ser 2000 9.21.UC2, e modernização versão Informix Dynamic Server ou remendar ele não está disponível como uma opção.

Foi útil?

Solução

Esteja ciente de que IDS 9,21 é muito tempo fora de apoio - na verdade, ambos os 9,30 e 9,40 (versões sucessoras da IDS) também estão fora de apoio. Você está anos de atraso para um upgrade, embora parece que você não pode realmente fazer o upgrade por razões políticas.

Parece que há um vazamento de memória em algum lugar no lado do SQL Server, talvez causado por um vazamento de memória no driver ODBC Informix que você está usando.

Se você não pode atualizar qualquer coisa, então uma reinicialização periódica do SQL Server para limpar a memória acumulada é a, opção mais simples mais confiável. Desde que você implica que funciona por meses em um tempo normalmente, eu olhar para reiniciar uma vez por mês ou assim.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top