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

Listar tablas de una instancia sql

Estas en el tema de Listar tablas de una instancia sql en el foro de SQL Server en Foros del Web. el problema que estoy teniendo como dice el titulo es que necesito listar todas las tablas de una instancia sql...he intentado con algunas sentencias pero ...
  #1 (permalink)  
Antiguo 24/09/2012, 13:45
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Exclamación Listar tablas de una instancia sql

el problema que estoy teniendo como dice el titulo es que necesito listar todas las tablas de una instancia sql...he intentado con algunas sentencias pero solo me trae las tablas de la master... alguien tiene idea de como hacer esta consulta?? espero que alguien me ayude


con esta consulta estaba intentando pero solo me trae los resultados del use que estoy haciendo... yo necesito que me traiga todas las tablas de todas las bases de datos que tengo no solo en una base de datos determinada, sino todas las tablas de la instancia

Código HTML:
Select [NAME] from sys.tables
  #2 (permalink)  
Antiguo 24/09/2012, 13:50
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 3 meses
Puntos: 17
Respuesta: Listar tablas de una instancia sql

Cita:
Iniciado por maximendez88 Ver Mensaje
el problema que estoy teniendo como dice el titulo es que necesito listar todas las tablas de una instancia sql...he intentado con algunas sentencias pero solo me trae las tablas de la master... alguien tiene idea de como hacer esta consulta?? espero que alguien me ayude


con esta consulta estaba intentando pero solo me trae los resultados del use que estoy haciendo... yo necesito que me traiga todas las tablas de todas las bases de datos que tengo no solo en una base de datos determinada, sino todas las tablas de la instancia

Código HTML:
Select [NAME] from sys.tables

Estimado use:

Código:
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
SALUDOS!!
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal
  #3 (permalink)  
Antiguo 24/09/2012, 14:07
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Listar tablas de una instancia sql

muchas gracias por la respuesta... ya habia intentado utilizar esa consulta que me pasaste... el problema es que esa consulta solo me regresa las tablas de la master y no todas las tablas de la instancia... como necesito... saludos
  #4 (permalink)  
Antiguo 24/09/2012, 14:12
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 3 meses
Puntos: 17
Respuesta: Listar tablas de una instancia sql

Cita:
Iniciado por maximendez88 Ver Mensaje
muchas gracias por la respuesta... ya habia intentado utilizar esa consulta que me pasaste... el problema es que esa consulta solo me regresa las tablas de la master y no todas las tablas de la instancia... como necesito... saludos
Esa instancia debes usarla en la Base de datos que quieras listar todas sus tablas.
Si estas en la maser listaras solo la master.

Schemas

Ejemplo

SELECT *
FROM TUBASE.INFORMATION_SCHEMA.TABLES
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal
  #5 (permalink)  
Antiguo 24/09/2012, 14:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Listar tablas de una instancia sql

respuesta rapida, query dinamico :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 24/09/2012, 14:25
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Listar tablas de una instancia sql

no se si se entiende pero yo necesitaria hacer un cursor que recorra todas las tablas de la instancia algo asi... pero no se como lograrlo ya que esto me da error


Código HTML:
DECLARE @nombreBases varchar(max);
DECLARE @nombreTablas varchar(max);

DECLARE cursorBases CURSOR FOR
SELECT [NAME] FROM sysdatabases ORDER BY 1;

DECLARE cursorTablas CURSOR FOR
SELECT table_name FROM @nombreBases.INFORMATION_SCHEMA.Tables

Última edición por maximendez88; 24/09/2012 a las 14:44
  #7 (permalink)  
Antiguo 24/09/2012, 16:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Listar tablas de una instancia sql

[HIGHLIGHT="SQL"]
para empezar para que necesitas un cursor? si puedes hacer eso con un query dinamico y un while algo como esto:

Código SQL:
Ver original
  1. ---Obtener los nombres de todas las tablas de una base y sacar cuantos registros tiene cada una de ellas
  2. DROP TABLE #temp
  3. DROP TABLE #t
  4. SELECT TABLE_NAME, IDENTITY(INT,1,1) AS ROW
  5. INTO #temp
  6. FROM information_schema.TABLES
  7. WHERE (table_type = 'base table')
  8.  
  9.  
  10.  
  11. CREATE TABLE #t
  12. (
  13.     [name] NVARCHAR(128),
  14.     [ROWS] CHAR(11),
  15.     reserved VARCHAR(18),
  16.     DATA VARCHAR(18),
  17.     index_size VARCHAR(18),
  18.     unused VARCHAR(18)
  19. )
  20.  
  21.  
  22. DECLARE
  23. @contador INT,
  24. @query VARCHAR(MAX),
  25. @x INT,
  26. @nombre VARCHAR(200)
  27.  
  28. SELECT @contador=COUNT(*) FROM #temp
  29. SET @x=1
  30. SET @query=''
  31. while @x<=@contador
  32. BEGIN
  33.     SELECT @nombre=TABLE_NAME FROM #temp WHERE ROW=@x
  34.        
  35.     SET @query='insert into #t exec sp_spaceused ' + CHAR(39) + @nombre + CHAR(39)  
  36.     EXEC Sp_sqlExec @query    
  37.     SET @x=@x+1
  38. END
  39.  
  40.  
  41. ----------------------------------------------------
  42.  
  43. SELECT * FROM #temp
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 24/09/2012, 16:24
Avatar de maximendez88  
Fecha de Ingreso: septiembre-2012
Ubicación: Montevideo
Mensajes: 131
Antigüedad: 11 años, 7 meses
Puntos: 3
Respuesta: Listar tablas de una instancia sql

gracias por la respuesta... los cursores los utilizo porque en el stored procedure necesito devolver un html que dibuje las databases, y las tablas correspondientes a cada base de datos.

algo asi es lo que tengo hecho


Código HTML:
DECLARE @nombreBases varchar(max);
DECLARE @nombreTablas varchar(max);


DECLARE cursorBases CURSOR FOR
SELECT [NAME] FROM sysdatabases ORDER BY 1;



DECLARE cursorTablas CURSOR FOR

SELECT table_name FROM INFORMATION_SCHEMA.Tables 

OPEN cursorBases
OPEN cursorTablas

FETCH NEXT FROM cursorBases
INTO @nombreBases


DECLARE @todo varchar(max);
SET @todo = '<html><body><table border="1">'

WHILE @@FETCH_STATUS = 0
BEGIN 
SET @todo = @todo + '<TR><TD>'+@nombreBases+ '</TD>'






FETCH NEXT FROM cursorTablas
into @nombreTablas

SET @todo=@todo + '<td><h2>Tablas</h2>'+@nombreTablas+'</td></tr>'





FETCH NEXT FROM cursorBases
INTO @nombreBases
END




set @todo = @todo + '</html></body></table>'

CLOSE cursorBases;
DEALLOCATE cursorBases;

close cursorTablas;
deallocate cursorTablas;

print @todo


  #9 (permalink)  
Antiguo 25/09/2012, 07:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Listar tablas de una instancia sql

analisaste el codigo que te mande?? viste que es lo mismo que un cursor sin que consuma los recursos de un cursor?? creo que no...te recomiendo que investigues un poco acerca de queries dinamicos que es lo que te puede servir...
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 25/09/2012, 11:55
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: Listar tablas de una instancia sql

Pero el quiere los CURSORES, al cliente, lo que pida......
__________________
MCTS Isaias Islas
  #11 (permalink)  
Antiguo 25/09/2012, 12:06
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Listar tablas de una instancia sql

Cita:
Iniciado por iislas Ver Mensaje
Pero el quiere los CURSORES, al cliente, lo que pida......
en este caso habria que decirle al cliente que su solucion no funciona pero si lo quiere hacer con cursores......alla el :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 25/09/2012, 12:49
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: Listar tablas de una instancia sql

asi es amigo, muchas veces aunque pongas todo de tu parte, la otra parte, se niega a escuchar, entonces, que te queda?????
__________________
MCTS Isaias Islas
  #13 (permalink)  
Antiguo 25/09/2012, 12:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Listar tablas de una instancia sql

Cita:
Iniciado por iislas Ver Mensaje
asi es amigo, muchas veces aunque pongas todo de tu parte, la otra parte, se niega a escuchar, entonces, que te queda?????
No queda de otra mas que hacerle caso....:(
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: instancia, select, sql, tabla, tablas
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 01:18.