Erros 8623 ou 8632: como contornar?

Ao executar uma consulta com muitos valores dentro de uma cláusula IN em um banco de dados SQL Server, podemos receber os erros 8623 ou 8632, descritos abaixo:

Erro 8623:
The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.

Erro 8632:
Internal error: An expression services limit has been reached. Please look for potentially complex expressions in your query, and try to simplify them.

Estes erros podem acontecer quando utilizamos um número extremamente grande de valores em uma cláusula IN. Isso pode consumir recursos em excesso pelo servidor, e gerar problemas de performance, causando um dos erros acima.
Porém, devemos ter atenção ao lidar com casos como este porque muitas vezes estes valores podem ser escritos de maneira automática por uma aplicação, o que pode dificultar o diagnóstico do problema.
Para contornar este problema, é necessário reescrever a consulta, diminuindo o número de valores dentro das cláusulas IN. Ou, caso seja necessário utilizar muitos valores dentro de uma cláusula IN, devemos substituí-los por valores dentro de uma tabela. Isso minimizará o impacto causado na performance do servidor, evitando os erros acima.

Mais informações no artigo abaixo:

• IN (Transact-SQL): http://msdn.microsoft.com/en-us/library/ms177682.aspx

 

Artigo escrito por: Rafael Mariucci

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s