Problemas para eliminar tabla

04/11/2004 - 22:30 por Claudio Valdes | Informe spam
Hola a todos:

Estoy ejecutando un Sp que se encuentra en la base de datos Master, el cual
se ejecuta desde cualquier base de datos

En el Sp existe una linea que verifica si existe una tabla y la borra, pero
no la ejecuta y me arroja el siguiente error

Servidor: mensaje 2714, nivel 16, estado 6, línea 1
Ya hay un objeto con el nombre 'TMP_Emi' en la base de datos.

El código dentro del Sp es el siguiente

IF exists (select * from dbo.sysobjects where id = object_id(N'[' +
ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
Begin
Set @sql='drop table [' + ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]'
exec (@sql)
End

Set @sql= 'Select top 100 a.*
Into ' + ltrim(rtrim(@BaseDatos)) + '.dbo.Tmp_Emi
From TablaBase'

Exec (@sql)

Estoy ejecutando el Sp bajo la cuenta del sa y no se porque no me deja
borrarlo, ya verifique ejecutandolo sin Sql-Dinamico
y es el mismo problema. Al parecer tendría que ver con problemas de permisos

Desde ya muchas gracias por su ayuda y comentarios

Atte,
Claudio Valdés

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera [MVP]
04/11/2004 - 22:24 | Informe spam
Una pregunta inocente: Para qué eliminas la tabla? No es mejor hacerle un
DELETE a los registros y luego insertar con la tabla vacía?

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Claudio Valdes" wrote in message
news:%
Hola a todos:

Estoy ejecutando un Sp que se encuentra en la base de datos Master, el
cual
se ejecuta desde cualquier base de datos

En el Sp existe una linea que verifica si existe una tabla y la borra,
pero
no la ejecuta y me arroja el siguiente error

Servidor: mensaje 2714, nivel 16, estado 6, línea 1
Ya hay un objeto con el nombre 'TMP_Emi' en la base de datos.

El código dentro del Sp es el siguiente

IF exists (select * from dbo.sysobjects where id = object_id(N'[' +
ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
Begin
Set @sql='drop table [' + ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]'
exec (@sql)
End

Set @sql= 'Select top 100 a.*
Into ' + ltrim(rtrim(@BaseDatos)) + '.dbo.Tmp_Emi
From TablaBase'

Exec (@sql)

Estoy ejecutando el Sp bajo la cuenta del sa y no se porque no me deja
borrarlo, ya verifique ejecutandolo sin Sql-Dinamico
y es el mismo problema. Al parecer tendría que ver con problemas de
permisos

Desde ya muchas gracias por su ayuda y comentarios

Atte,
Claudio Valdés


Respuesta Responder a este mensaje
#2 Isaias
04/11/2004 - 22:39 | Informe spam
Claudio

En realidad tu piensas que si se borro la tabla, pero yo volveria a
verificar la existencia de dicha tabla despues de la instruccion exec (@sql)

De existir, quiere decir que NO se esta eliminando y como bien mencionas,
podrian ser permisos.
Respuesta Responder a este mensaje
#3 Guillermo Roldán
04/11/2004 - 22:56 | Informe spam
Quizás habría que cualificar bien la tabla de la consulta: dbo.sysobjects...
¿pero de que BBDD? ¿de master o de la BBDD desde la que llamas al procedure?

Quizás te haga la SELECT de master, y como en master no existe dicha tabla,
pues no la borras, y al crearla con el SELECT INTO (que ahí si lo cualificas
correctamente) te casca.

Al margen de esto... otra posible opción es TRUNCATE TABLE y después INSERT
de una SELECT, por intentar darte otras alternativas, ya que un DELETE es
más costoso que un TRUNCATE al registrar en LOG, y borrar y crear una tabla
parece algo drástico...

Espero haber podido ayudarte.

Saludos,

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain




"Claudio Valdes" escribió en el mensaje
news:#
Hola a todos:

Estoy ejecutando un Sp que se encuentra en la base de datos Master, el


cual
se ejecuta desde cualquier base de datos

En el Sp existe una linea que verifica si existe una tabla y la borra,


pero
no la ejecuta y me arroja el siguiente error

Servidor: mensaje 2714, nivel 16, estado 6, línea 1
Ya hay un objeto con el nombre 'TMP_Emi' en la base de datos.

El código dentro del Sp es el siguiente

IF exists (select * from dbo.sysobjects where id = object_id(N'[' +
ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
Begin
Set @sql='drop table [' + ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]'
exec (@sql)
End

Set @sql= 'Select top 100 a.*
Into ' + ltrim(rtrim(@BaseDatos)) + '.dbo.Tmp_Emi
From TablaBase'

Exec (@sql)

Estoy ejecutando el Sp bajo la cuenta del sa y no se porque no me deja
borrarlo, ya verifique ejecutandolo sin Sql-Dinamico
y es el mismo problema. Al parecer tendría que ver con problemas de


permisos

Desde ya muchas gracias por su ayuda y comentarios

Atte,
Claudio Valdés


Respuesta Responder a este mensaje
#4 MAXI
04/11/2004 - 23:47 | Informe spam
ojo con el truncate!! que si tienes FK no va a funcionar :(




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Guillermo Roldán" escribió en el
mensaje news:
Quizás habría que cualificar bien la tabla de la consulta:
dbo.sysobjects...
¿pero de que BBDD? ¿de master o de la BBDD desde la que llamas al
procedure?

Quizás te haga la SELECT de master, y como en master no existe dicha
tabla,
pues no la borras, y al crearla con el SELECT INTO (que ahí si lo
cualificas
correctamente) te casca.

Al margen de esto... otra posible opción es TRUNCATE TABLE y después
INSERT
de una SELECT, por intentar darte otras alternativas, ya que un DELETE es
más costoso que un TRUNCATE al registrar en LOG, y borrar y crear una
tabla
parece algo drástico...

Espero haber podido ayudarte.

Saludos,

Guillermo Roldán
MCDBA, MCSE, MCSA
Madrid - Spain




"Claudio Valdes" escribió en el mensaje
news:#
Hola a todos:

Estoy ejecutando un Sp que se encuentra en la base de datos Master, el


cual
se ejecuta desde cualquier base de datos

En el Sp existe una linea que verifica si existe una tabla y la borra,


pero
no la ejecuta y me arroja el siguiente error

Servidor: mensaje 2714, nivel 16, estado 6, línea 1
Ya hay un objeto con el nombre 'TMP_Emi' en la base de datos.

El código dentro del Sp es el siguiente

IF exists (select * from dbo.sysobjects where id = object_id(N'[' +
ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
Begin
Set @sql='drop table [' + ltrim(rtrim(@BaseDatos)) +
'].[dbo].[Tmp_Emi]'
exec (@sql)
End

Set @sql= 'Select top 100 a.*
Into ' + ltrim(rtrim(@BaseDatos)) + '.dbo.Tmp_Emi
From TablaBase'

Exec (@sql)

Estoy ejecutando el Sp bajo la cuenta del sa y no se porque no me deja
borrarlo, ya verifique ejecutandolo sin Sql-Dinamico
y es el mismo problema. Al parecer tendría que ver con problemas de


permisos

Desde ya muchas gracias por su ayuda y comentarios

Atte,
Claudio Valdés






Respuesta Responder a este mensaje
#5 MAXI
04/11/2004 - 23:53 | Informe spam
Claudio, ademas de lo que indican los compas!! no te recomiendo el uso de
SQL-Dinamico!! sacalo por favor!!




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messenger:

"Claudio Valdes" escribió en el mensaje
news:%
Hola a todos:

Estoy ejecutando un Sp que se encuentra en la base de datos Master, el
cual
se ejecuta desde cualquier base de datos

En el Sp existe una linea que verifica si existe una tabla y la borra,
pero
no la ejecuta y me arroja el siguiente error

Servidor: mensaje 2714, nivel 16, estado 6, línea 1
Ya hay un objeto con el nombre 'TMP_Emi' en la base de datos.

El código dentro del Sp es el siguiente

IF exists (select * from dbo.sysobjects where id = object_id(N'[' +
ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]') and OBJECTPROPERTY(id,
N'IsUserTable') = 1)
Begin
Set @sql='drop table [' + ltrim(rtrim(@BaseDatos)) + '].[dbo].[Tmp_Emi]'
exec (@sql)
End

Set @sql= 'Select top 100 a.*
Into ' + ltrim(rtrim(@BaseDatos)) + '.dbo.Tmp_Emi
From TablaBase'

Exec (@sql)

Estoy ejecutando el Sp bajo la cuenta del sa y no se porque no me deja
borrarlo, ya verifique ejecutandolo sin Sql-Dinamico
y es el mismo problema. Al parecer tendría que ver con problemas de
permisos

Desde ya muchas gracias por su ayuda y comentarios

Atte,
Claudio Valdés


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