sql-server - valores - retornar valor stored procedure sql server




¿Alguna vez encontró una consulta que SQL Server no pudo ejecutar porque hacía referencia a demasiadas tablas? (6)

Me gustaría ver esa consulta, pero me imagino que es un problema con algún tipo de iterador, y aunque no puedo pensar en ninguna situación donde sea posible, apuesto a que es de un mal momento / caso / cursor o una tonelada de vistas mal implementadas.

¿Alguna vez has visto alguno de sus mensajes de error?

- SQL Server 2000

No se pudo asignar una tabla auxiliar para la resolución de vista o función.
Se superó el número máximo de tablas en una consulta (256).

- SQL Server 2005

Demasiados nombres de tabla en la consulta. El máximo permitido es 256.

Si es así, ¿qué has hecho?

¿Abandonado? ¿Convenció al cliente de simplificar sus demandas? Denormalized la base de datos?

@ (todos quieren que publique la consulta):

  1. No estoy seguro de si puedo pegar 70 kilobytes de código en la ventana de edición de respuestas.
  2. Incluso si puedo esto, esto no ayudará, ya que estos 70 kilobytes de código harán referencia a 20 o 30 vistas que yo también tendría que publicar, ya que de lo contrario el código no tendrá sentido.

No quiero sonar como si estuviera alardeando aquí, pero el problema no está en las consultas. Las consultas son óptimas (o al menos casi óptimas). He pasado incontables horas optimizándolos, buscando cada columna y cada tabla que se puede eliminar. Imagínese un informe que tiene 200 o 300 columnas que deben rellenarse con una sola instrucción SELECT (porque así fue como se diseñó hace unos años cuando todavía era un informe pequeño).


Nunca me he encontrado con este tipo de situación, y para ser honesto, la idea de hacer referencia a> 256 tablas en una consulta me llena de temor mortal.

Su primera pregunta probablemente debería ser "¿Por qué tantos?", Seguido de cerca por "¿Qué información NO necesito?" Me preocuparía que la cantidad de datos que se devuelven de dicha consulta también empezara a afectar el rendimiento de la aplicación de forma bastante severa.


Publique la consulta: D

También siento que uno de los posibles problemas podría ser tener toneladas (leer más de 200) de tablas de nombre / valor que podrían condensarse en una única tabla de búsqueda.


@chopeen Puede cambiar la forma en que calcula estas estadísticas y, en su lugar, mantener una tabla separada de todas las estadísticas por producto. Cuando se realiza un pedido, recorra los productos y actualice los registros apropiados en la tabla de estadísticas. Esto desplazaría una gran parte de la carga de cálculo a la página de pago en lugar de ejecutar todo en una gran consulta al ejecutar un informe. Por supuesto, hay algunas estadísticas que no van a funcionar tan bien de esta manera, por ejemplo, haciendo un seguimiento de las próximas compras de los clientes después de comprar un producto en particular.


Tuve el mismo problema ... mi caja de desarrollo ejecuta SQL Server 2008 (la vista funcionó bien) pero en producción (con SQL Server 2005) la vista no. Terminé creando vistas para evitar esta limitación, usando las nuevas vistas como parte de la consulta en la vista que arrojó el error.

Un poco tonto teniendo en cuenta que la ejecución lógica es la misma ...


Tuve el mismo problema en SQL Server 2005 (funcionó en 2008) cuando quería crear una vista. Resolví el problema creando un procedimiento almacenado en lugar de una vista.







sql-server-2000