Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

PORQUE sale este Mensaje al DROPEAR UN INDICE?

Estas en el tema de PORQUE sale este Mensaje al DROPEAR UN INDICE? en el foro de SQL Server en Foros del Web. Saludos amigos del foro, por favor me pueden ayudar con una duda, que no me queda claro todavía xq no funciona. Mi sintaxis de borrado ...
  #1 (permalink)  
Antiguo 25/06/2012, 09:38
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
PORQUE sale este Mensaje al DROPEAR UN INDICE?

Saludos amigos del foro, por favor me pueden ayudar con una duda, que no me queda claro todavía xq no funciona.

Mi sintaxis de borrado es:

IF EXISTS(SELECT * FROM sysindexes WHERE NAME='IDX_1')
DROP INDEX TABLAXYZ.IDX_1

Pero el mensaje que me sale es:

Cannot drop the index 'TABLAXYZ.IDX_1', because it does not exist in the system catalog.

Lo curioso es que cuando cuando ejecuto el siguiente fragmento, si me arroja una fila, osea si existe,..
SELECT * FROM sysindexes WHERE NAME='IDX_1'
..pero una nueva duda me nace..como se si ese indice es de mi tabla en cuestion y no de otra?


Como dato adicional, mi tabla no posee PKs, y estoy procediendo en SQL2000.

Ya busque en WWW pero aun no me queda claro.., xfas cómo procedo?
Gracias a todos

LE

Última edición por LUISESPOCH; 25/06/2012 a las 09:46 Razón: correccion de escritura
  #2 (permalink)  
Antiguo 25/06/2012, 15:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Simple, la estructura del DROP INDEX, es:

DROP INDEX <name_of_index> ON [owner].[name_table]
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 25/06/2012, 17:11
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Saludos Isaías...

Te cuento que tambien lo intente pero no me funciono. Sabes el problema real es que la validacion es muy general....

IF EXISTS(SELECT * FROM sysindexes WHERE NAME='IDX_1')
drop index TABLAXYX.IDX_1 --> Esta linea siempre me ha funcionado

..es muy general ya que puede existir mas de una tabla con el mismo nombre de INDICE..
Ante esto... es posible crear una validacion que involucre el nombre de la tabla?

Gracias amigo
LE
  #4 (permalink)  
Antiguo 25/06/2012, 17:22
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Espero y no me digas que es para SQL Server 2000 (ja), esta seria la forma de verificar un index en 2005 y superior

SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Schema.tableName','U')
ADN i.name = 'idx_NameOfIndex'
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 25/06/2012, 17:33
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Cita:
Iniciado por iislas Ver Mensaje
Espero y no me digas que es para SQL Server 2000 (ja), esta seria la forma de verificar un index en 2005 y superior

SELECT t.name AS [Table Name], i.name AS [Index Name], i.type_desc,
i.data_space_id, f.name AS [Filegroup Name]
FROM sys.indexes AS i
JOIN sys.filegroups AS f ON i.data_space_id = f.data_space_id
JOIN sys.tables as t ON i.object_id = t.object_id
AND i.object_id = OBJECT_ID(N'Schema.tableName','U')
ADN i.name = 'idx_NameOfIndex'


jajaja, si gran "sensei"... efectivamente se trata de un sqlserver 2000, me sale esto: Invalid object name 'sys.indexes'.

  #6 (permalink)  
Antiguo 26/06/2012, 15:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

No tengo ya referencias de 2000, espero que alguien pueda ayudarnos
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 26/06/2012, 17:42
Avatar de LUISESPOCH  
Fecha de Ingreso: octubre-2006
Mensajes: 194
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Iislas, te comento que ya encontre la solucion..
la menera de validar la existencia de un indice en SQLSever 2000 es:

if exists
(select * from sysindexes where id=object_id('tablaXYZ') and name='IDX_1')
select 'si existe'
else
select 'no existe'


Gracias Andrew Brian (y gracias maestro IIslas)
  #8 (permalink)  
Antiguo 27/06/2012, 11:52
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: PORQUE sale este Mensaje al DROPEAR UN INDICE?

Muchas gracias

Lo conveniente seria que en cuanto pudieras, te migraras a una version superior, ya estamos en 2012 y aun trabajas con 2000
__________________
MCTS Isaias Islas

Etiquetas: mensaje, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.