Sobre borrado de muuuchos registros

10/05/2006 - 16:23 por CHAR72 | Informe spam
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has been
canceled because the estimated cost of this query (72) exceeds the
configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga, pero la
pregunta es: como los borro? no puedo hacer delete top 1000 y borrarlos de
cada vez, tiene un campo ID pero hacer un SELECT TOP 1000 @MAX_ID=MAX(ID) y
luego un DELETE FROM ... WHERE ID<@MAX_ID eso en un recorrido de un
cursor...

Pero no hay otra forma?

Saludos

Carlos

Preguntas similare

Leer las respuestas

#6 Miguel Egea
10/05/2006 - 22:26 | Informe spam
Será una gran experiencia volver a leerte amigo.

Dame de alta en tu messenguer, por alguna razón no te tengo :), tanto
cambio, y sabes

Saludos!!

"Norman" escribió en el mensaje
news:%
Hola Miguel!!!!!

Mucho gusto en verlos a todos de nuevo, y veo que de los viejos quedan
bastantes,

Sigo haciendo lo mismo, pero estube bastante tiempo trabajando arriba de
los barcos.
Yo trabajo en una compania que suministra y le presta servicios a barcos
cruceros (comida, bebida, restaurant, cocineros, bartenders etc...).
Tambien estamos tratando de cambiar los sistemas que tenenemos para la
nueva tecnologia NET y entonces estoy estudiando y actualizandome, el
cambio es bastante fuerte ya que tenemos bastantes aplicaciones y queremos
desarrollarlas de nuevo completamente desde cero.
Queremos despedirnos del viejo VB6

Me alegro que esten por aqui, y ahora tratare de participar mas seguido.


Saludos



Norman.. :-)






"Miguel Egea" wrote in message
news:eC$
Norman!!!! cuanto tiempo sin leerte, encantado de volver a verte, ¿por
donde andas? ¿Que haces ahora?
"Norman" escribió en el mensaje
news:
SET ROWCOUNT 1000 -- o la cantidad de records que quieras borrar en cada
pase
delete from dbo.TuTabla
where ...

while @@rowcount > 0
delete from dbo.TuTabla
where ...

SET ROWCOUNT 0



Saludos,


Norman




"CHAR72" <char72[nos pa m]@gmail.com> wrote in message
news:
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente
error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has
been canceled because the estimated cost of this query (72) exceeds the
configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga,
pero la pregunta es: como los borro? no puedo hacer delete top 1000 y
borrarlos de cada vez, tiene un campo ID pero hacer un SELECT TOP 1000
@MAX_ID=MAX(ID) y luego un DELETE FROM ... WHERE ID<@MAX_ID eso en
un recorrido de un cursor...

Pero no hay otra forma?

Saludos

Carlos














Respuesta Responder a este mensaje
#7 Norman A. Armas
10/05/2006 - 22:40 | Informe spam
Ya esta dado de alta señor.


saludos

Norman


"Miguel Egea" wrote in message
news:
Será una gran experiencia volver a leerte amigo.

Dame de alta en tu messenguer, por alguna razón no te tengo :), tanto
cambio, y sabes

Saludos!!

"Norman" escribió en el mensaje
news:%
Hola Miguel!!!!!

Mucho gusto en verlos a todos de nuevo, y veo que de los viejos quedan
bastantes,

Sigo haciendo lo mismo, pero estube bastante tiempo trabajando arriba de
los barcos.
Yo trabajo en una compania que suministra y le presta servicios a barcos
cruceros (comida, bebida, restaurant, cocineros, bartenders etc...).
Tambien estamos tratando de cambiar los sistemas que tenenemos para la
nueva tecnologia NET y entonces estoy estudiando y actualizandome, el
cambio es bastante fuerte ya que tenemos bastantes aplicaciones y
queremos desarrollarlas de nuevo completamente desde cero.
Queremos despedirnos del viejo VB6

Me alegro que esten por aqui, y ahora tratare de participar mas seguido.


Saludos



Norman.. :-)






"Miguel Egea" wrote in message
news:eC$
Norman!!!! cuanto tiempo sin leerte, encantado de volver a verte, ¿por
donde andas? ¿Que haces ahora?
"Norman" escribió en el mensaje
news:
SET ROWCOUNT 1000 -- o la cantidad de records que quieras borrar en
cada pase
delete from dbo.TuTabla
where ...

while @@rowcount > 0
delete from dbo.TuTabla
where ...

SET ROWCOUNT 0



Saludos,


Norman




"CHAR72" <char72[nos pa m]@gmail.com> wrote in message
news:
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente
error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has
been canceled because the estimated cost of this query (72) exceeds
the configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga,
pero la pregunta es: como los borro? no puedo hacer delete top 1000 y
borrarlos de cada vez, tiene un campo ID pero hacer un SELECT TOP 1000
@MAX_ID=MAX(ID) y luego un DELETE FROM ... WHERE ID<@MAX_ID eso en
un recorrido de un cursor...

Pero no hay otra forma?

Saludos

Carlos


















Respuesta Responder a este mensaje
#8 CHAR72
10/05/2006 - 23:58 | Informe spam
Muchas gracias Norman. Lo probare !!!


"Norman" escribió en el mensaje
news:
SET ROWCOUNT 1000 -- o la cantidad de records que quieras borrar en cada
pase
delete from dbo.TuTabla
where ...

while @@rowcount > 0
delete from dbo.TuTabla
where ...

SET ROWCOUNT 0



Saludos,


Norman




"CHAR72" <char72[nos pa m]@gmail.com> wrote in message
news:
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has been
canceled because the estimated cost of this query (72) exceeds the
configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga, pero
la pregunta es: como los borro? no puedo hacer delete top 1000 y
borrarlos de cada vez, tiene un campo ID pero hacer un SELECT TOP 1000
@MAX_ID=MAX(ID) y luego un DELETE FROM ... WHERE ID<@MAX_ID eso en un
recorrido de un cursor...

Pero no hay otra forma?

Saludos

Carlos






Respuesta Responder a este mensaje
#9 CHAR72
11/05/2006 - 00:01 | Informe spam
Maxi=SQL2005, se nota tu entusiasmo con el SQL2005, vi que ultimamente
contestas todas las preguntas con respuestas para esta plataforma, te
internaron en Redmond para mostrarte todas las nuevas ventajas ????? !!!!
Lamentablemente mi caso es que tengo SQL2000 todavia

Saludos y gracias compañero argentino.

Carlos

"Maxi" escribió en el mensaje
news:%
Hola, te paso un ejemplo de como borrar registros en sql2005 de a partes

CREATE TABLE ##PEDIDOS (ID INT IDENTITY, VALOR INT)
GO


DECLARE @N INT
SET @N = 1
WHILE @N <= 500
BEGIN
INSERT INTO ##PEDIDOS (VALOR) VALUES (@N+50)
SET @N = @N + 1
END


WHILE (SELECT COUNT(*) FROM ##PEDIDOS) > 0
BEGIN
DELETE TOP(50) FROM ##PEDIDOS
END



Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje
news:
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has been
canceled because the estimated cost of this query (72) exceeds the
configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga, pero
la pregunta es: como los borro? no puedo hacer delete top 1000 y
borrarlos de cada vez, tiene un campo ID pero hacer un SELECT TOP 1000
@MAX_ID=MAX(ID) y luego un DELETE FROM ... WHERE ID<@MAX_ID eso en un
recorrido de un cursor...

Pero no hay otra forma?

Saludos

Carlos






Respuesta Responder a este mensaje
#10 CHAR72
11/05/2006 - 00:02 | Informe spam
Se ejecuta una vez cada 15 dias aproximadamente.

Comparare tu respuesta y la de Norman, aunque me inclino mas por la de
Norman porque creo tendre menos consumo de recursos.

Saludos


"Jorge Gonzalez" escribió en el mensaje
news:%23$
SQL SERVER tiene una característica llamada query governor que evita la
ejecución de queries con un costo mayor a cierto parámetro configurable.
Tu consulta está excediendo este costo.

Estás ejecutando esta consulta de forma periódica? o es una sóla vez?

Se me ocurre un código poco inteligente pero que probablemente te funcione

select top 150000 ID into #tmp
from Tabla
where.

Delete from Tabla
from Tabla T1 inner join #tmp T2 on T1.ID = T2.ID

Delete from Tabla
Where.

Drop table #tmp

de esta forma vas a borrar los primeros 150 mil registros que ingresaste a
la tabla temporal ( eso no va a exceder el parámetro del query governor) y
luego borrás el resto de registros con el where normal y borrás la tabla
temporal

esta es una solución poco elegante pero estoy seguro que te funcionará.

Se agradecen sugerencias

Jorge González

"CHAR72" <char72[nos pa m]@gmail.com> escribió en el mensaje
news:
Hola tengo un DTS y necesito borrar mas de 300 mil registros segun un
criterio, la cuestion es que cuando lo intento tengo el siguiente error:

(Microsoft OLE DB Provider for SQL Server (80040e14): The query has been
canceled because the estimated cost of this query (72) exceeds the
configured threshold of 60. Contact the system administrator.)

No es mi servidor y supongo que al dueño no le apetece que se haga, pero
la pregunta es: como los borro? no puedo hacer delete top 1000 y
borrarlos de cada vez, tiene un campo ID pero hacer un SELECT TOP 1000
@MAX_ID=MAX(ID) y luego un DELETE FROM ... WHERE ID<@MAX_ID eso en un
recorrido de un cursor...

Pero no hay otra forma?

Saludos

Carlos






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