Como funciona SQL

13/04/2007 - 19:04 por Mercedes | Informe spam
Buenos Dias
Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde realizo
los siguientes pasos:
-Creo una Tabla Fija
-Inserto datos de otras tablas a la tabla creada
-Despliego los registros de la tabla nueva en la página
-Elimino tabla (Drop Table).

¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
Puede afectar.
Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra otro,
tendría algun problema el SQL y en consecuencia la página como:

- Mande un error que no se puede crear la tabla por que ya fue creada por la
primera petición o algo parecido.
-O duplicacion de datos al momento de la insercción, etc.

¿Como trabaja el SQL en este tipo de casos?
¿Que me sugieren, para este caso?

Gracias por su apoyo.

Preguntas similare

Leer las respuestas

#1 Maxi
13/04/2007 - 19:57 | Informe spam
Hola, no es una buena practica ir haciendo tablas y borrandolas online, ello
indica que tenemos algun problema de diseño, si tenes alta concurrencia
tendras problemas, si son tablas temporales habra que ver como las
declaraste! pero te repito, no es buena idea ni mucho menos un buen diseño
lo que estas haciendo


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Mercedes" escribió en el mensaje
news:
Buenos Dias
Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde
realizo
los siguientes pasos:
-Creo una Tabla Fija
-Inserto datos de otras tablas a la tabla creada
-Despliego los registros de la tabla nueva en la página
-Elimino tabla (Drop Table).

¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
Puede afectar.
Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra
otro,
tendría algun problema el SQL y en consecuencia la página como:

- Mande un error que no se puede crear la tabla por que ya fue creada por
la
primera petición o algo parecido.
-O duplicacion de datos al momento de la insercción, etc.

¿Como trabaja el SQL en este tipo de casos?
¿Que me sugieren, para este caso?

Gracias por su apoyo.


Respuesta Responder a este mensaje
#2 Mercedes
13/04/2007 - 20:28 | Informe spam
Mi problema comienza desde que no puedo poner un consecutivo como campo, es
decir me solicitan seleccione los 50 Mercados que tuvieron mejor ingreso en
cierta fecha y a partir de esta fecha me vaya 24 mese atras y ponga en que
posicion se encontraban en cada mes.
Lo que intentaba hacer una tabla con la siguiente estructura

MERCADO INGRESO POSICION1 ... POSICION24
Jalapa 10,000 1 ... 12
D.F. 8,000 2 ... 55
.. etc.

Mi tabla origen esta conformada de la siguiente manera
MERCADO MES AÑO INGRESO
Jalapa 1 2007 10,000
Jalapa 12 2006 25,000
... etc

Nota: Esto se va complicando por que requiero incluir presupuestos, así como
otros indicadores.

Intente trabajar con tablas temporales desarrollando todo esto con consultas
de SQL y manejando la propiedad IDENTITY a traves de un Store Procedure pero
al desplegar el contenido de la tabla temporal final (Ejecutando el store) en
una página ASP se queda leyendola y baja el rendimiento de mi equipo.

La unica solucion que encontré de manera inmediata es crear 2 tablas fijas y
eliminarlas al final de todo el proceso, solo de esta forma se ve el reporte
en ASP. ¿Es muy malo para SQL estar creando y borrando tablas fijas?

Ayudenme no sé que hacer.



"Maxi" wrote:

Hola, no es una buena practica ir haciendo tablas y borrandolas online, ello
indica que tenemos algun problema de diseño, si tenes alta concurrencia
tendras problemas, si son tablas temporales habra que ver como las
declaraste! pero te repito, no es buena idea ni mucho menos un buen diseño
lo que estas haciendo


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Mercedes" escribió en el mensaje
news:
> Buenos Dias
> Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde
> realizo
> los siguientes pasos:
> -Creo una Tabla Fija
> -Inserto datos de otras tablas a la tabla creada
> -Despliego los registros de la tabla nueva en la página
> -Elimino tabla (Drop Table).
>
> ¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
> Puede afectar.
> Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra
> otro,
> tendría algun problema el SQL y en consecuencia la página como:
>
> - Mande un error que no se puede crear la tabla por que ya fue creada por
> la
> primera petición o algo parecido.
> -O duplicacion de datos al momento de la insercción, etc.
>
> ¿Como trabaja el SQL en este tipo de casos?
> ¿Que me sugieren, para este caso?
>
> Gracias por su apoyo.
>
>



Respuesta Responder a este mensaje
#3 Maxi
13/04/2007 - 21:28 | Informe spam
Mercedes, que es un consecutivo? transformar filas en columnas?


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Mercedes" escribió en el mensaje
news:
Mi problema comienza desde que no puedo poner un consecutivo como campo,
es
decir me solicitan seleccione los 50 Mercados que tuvieron mejor ingreso
en
cierta fecha y a partir de esta fecha me vaya 24 mese atras y ponga en que
posicion se encontraban en cada mes.
Lo que intentaba hacer una tabla con la siguiente estructura

MERCADO INGRESO POSICION1 ... POSICION24
Jalapa 10,000 1 ... 12
D.F. 8,000 2 ... 55
.. etc.

Mi tabla origen esta conformada de la siguiente manera
MERCADO MES AÑO INGRESO
Jalapa 1 2007 10,000
Jalapa 12 2006 25,000
... etc

Nota: Esto se va complicando por que requiero incluir presupuestos, así
como
otros indicadores.

Intente trabajar con tablas temporales desarrollando todo esto con
consultas
de SQL y manejando la propiedad IDENTITY a traves de un Store Procedure
pero
al desplegar el contenido de la tabla temporal final (Ejecutando el store)
en
una página ASP se queda leyendola y baja el rendimiento de mi equipo.

La unica solucion que encontré de manera inmediata es crear 2 tablas fijas
y
eliminarlas al final de todo el proceso, solo de esta forma se ve el
reporte
en ASP. ¿Es muy malo para SQL estar creando y borrando tablas fijas?

Ayudenme no sé que hacer.



"Maxi" wrote:

Hola, no es una buena practica ir haciendo tablas y borrandolas online,
ello
indica que tenemos algun problema de diseño, si tenes alta concurrencia
tendras problemas, si son tablas temporales habra que ver como las
declaraste! pero te repito, no es buena idea ni mucho menos un buen
diseño
lo que estas haciendo


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Mercedes" escribió en el mensaje
news:
> Buenos Dias
> Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde
> realizo
> los siguientes pasos:
> -Creo una Tabla Fija
> -Inserto datos de otras tablas a la tabla creada
> -Despliego los registros de la tabla nueva en la página
> -Elimino tabla (Drop Table).
>
> ¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
> Puede afectar.
> Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra
> otro,
> tendría algun problema el SQL y en consecuencia la página como:
>
> - Mande un error que no se puede crear la tabla por que ya fue creada
> por
> la
> primera petición o algo parecido.
> -O duplicacion de datos al momento de la insercción, etc.
>
> ¿Como trabaja el SQL en este tipo de casos?
> ¿Que me sugieren, para este caso?
>
> Gracias por su apoyo.
>
>



Respuesta Responder a este mensaje
#4 A.A.S.
13/04/2007 - 21:42 | Informe spam
Hola Mercedes... mira, quizas hacer una query como la siguiente te ayude...
yo la probé y funcionó... de todas formas creo que este tipo de
implementaciones se resuelven mejor utilizando herramientas como reporting
services, que tiene objetos específicos (como la matriz) para para resolver
estos problemas.

De todas formas acá esta la consulta:

declare @fecha datetime

set @fecha = '20070301'

select
top 50
mercado,
sum(ingreso) as total,
(select ingreso from tabla_mercado where mercado = ini.mercado and año =
datepart(yyyy,dateadd(mm,-0,@fecha)) and mes =
datepart(mm,dateadd(mm,-0,@fecha))) as pos1,
(select ingreso from tabla_mercado where mercado = ini.mercado and año =
datepart(yyyy,dateadd(mm,-1,@fecha)) and mes =
datepart(mm,dateadd(mm,-1,@fecha))) as pos2,
:
:
:
(select ingreso from tabla_mercado where mercado = ini.mercado and año =
datepart(yyyy,dateadd(mm,-24,@fecha)) and mes =
datepart(mm,dateadd(mm,-24,@fecha))) as pos24
from tabla_mercado as ini
group by mercado
order by total desc

tabla_mercado es la tabla en la cual tienes la información base.

El problema es que debes hacer una subquery por cada periodo hacia atrás que
quieras obtener.

Saludos.

Andrés

"Mercedes" wrote:

Buenos Dias
Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde realizo
los siguientes pasos:
-Creo una Tabla Fija
-Inserto datos de otras tablas a la tabla creada
-Despliego los registros de la tabla nueva en la página
-Elimino tabla (Drop Table).

¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
Puede afectar.
Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra otro,
tendría algun problema el SQL y en consecuencia la página como:

- Mande un error que no se puede crear la tabla por que ya fue creada por la
primera petición o algo parecido.
-O duplicacion de datos al momento de la insercción, etc.

¿Como trabaja el SQL en este tipo de casos?
¿Que me sugieren, para este caso?

Gracias por su apoyo.


Respuesta Responder a este mensaje
#5 Javier Loria
14/04/2007 - 02:31 | Informe spam
Hola Mercedes:
Tal vez el siguiente codigo pueda ayudarte:

DECLARE @Mes INT
DECLARE @Año INT
DECLARE @MesAnt INT
DECLARE @AñoAnt INT

SET @Año 07
SET @Mes=3

SET @AñoAnt 05
SET @MesAnt=3

SELECT TOP 50 Mercado Ingreso
FROM TablaOrigen
WHERE Mes=@Mes
AND Año=@Año
ORDER BY Ingreso DESC

SELECT B1.Mercado, B1.Ingreso, COUNT(*) AS Posicion
FROM TablaOrigen AS B1
JOIN TablaOrigen AS B2
ON B1.Ingreso>².Ingreso
WHERE Mes=@MesAnt
AND Año=@AñoAnt
GROUP BY B1.Mercado, B1.Ingreso



SELECT Mejores50.Mercado
, Mejores50.Ingreso
, Posicion24.Ingreso AS Ingreso24
, Posicion24.Posicion AS Posicion24
FROM (SELECT TOP 50 Mercado,Ingreso
FROM TablaOrigen
WHERE Mes=@Mes
AND Año=@Año
ORDER BY Ingreso DESC) AS Mejores50
JOIN ( SELECT B1.Mercado, B1.Ingreso, COUNT(*) AS Posicion
FROM TablaOrigen AS B1
JOIN TablaOrigen AS B2
ON B1.Ingreso>².Ingreso
WHERE Mes=@MesAnt
AND Año=@AñoAnt
GROUP BY B1.Mercado, B1.Ingreso ) AS Posicion24
ON Mejores50.Mercado=Posicion24.Mercado

Sin tablas temporarles, ni tablas permanentes que se borran y se crean.
Espero se entienda y puedas ajustarlo a tu sistema.
Saludos,

Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

"Mercedes" wrote in message
news:
Mi problema comienza desde que no puedo poner un consecutivo como campo,
es
decir me solicitan seleccione los 50 Mercados que tuvieron mejor ingreso
en
cierta fecha y a partir de esta fecha me vaya 24 mese atras y ponga en que
posicion se encontraban en cada mes.
Lo que intentaba hacer una tabla con la siguiente estructura

MERCADO INGRESO POSICION1 ... POSICION24
Jalapa 10,000 1 ... 12
D.F. 8,000 2 ... 55
.. etc.

Mi tabla origen esta conformada de la siguiente manera
MERCADO MES AÑO INGRESO
Jalapa 1 2007 10,000
Jalapa 12 2006 25,000
... etc

Nota: Esto se va complicando por que requiero incluir presupuestos, así
como
otros indicadores.

Intente trabajar con tablas temporales desarrollando todo esto con
consultas
de SQL y manejando la propiedad IDENTITY a traves de un Store Procedure
pero
al desplegar el contenido de la tabla temporal final (Ejecutando el store)
en
una página ASP se queda leyendola y baja el rendimiento de mi equipo.

La unica solucion que encontré de manera inmediata es crear 2 tablas fijas
y
eliminarlas al final de todo el proceso, solo de esta forma se ve el
reporte
en ASP. ¿Es muy malo para SQL estar creando y borrando tablas fijas?

Ayudenme no sé que hacer.



"Maxi" wrote:

Hola, no es una buena practica ir haciendo tablas y borrandolas online,
ello
indica que tenemos algun problema de diseño, si tenes alta concurrencia
tendras problemas, si son tablas temporales habra que ver como las
declaraste! pero te repito, no es buena idea ni mucho menos un buen
diseño
lo que estas haciendo


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Mercedes" escribió en el mensaje
news:
> Buenos Dias
> Mi duda es, tengo una aplicación ASP conectandose con SQL2000 donde
> realizo
> los siguientes pasos:
> -Creo una Tabla Fija
> -Inserto datos de otras tablas a la tabla creada
> -Despliego los registros de la tabla nueva en la página
> -Elimino tabla (Drop Table).
>
> ¿Que sucede si tengo una alta concurrencia de usuarios a esa página?
> Puede afectar.
> Que pasa si un usuario entra en cierto tiempo y a los 2 segundo entra
> otro,
> tendría algun problema el SQL y en consecuencia la página como:
>
> - Mande un error que no se puede crear la tabla por que ya fue creada
> por
> la
> primera petición o algo parecido.
> -O duplicacion de datos al momento de la insercción, etc.
>
> ¿Como trabaja el SQL en este tipo de casos?
> ¿Que me sugieren, para este caso?
>
> Gracias por su apoyo.
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida