Existe Tabla del sistema que guarde todas las tablas de las bases de datos??

06/09/2004 - 20:58 por Hernan Arboleda | Informe spam
Hola !!

Existe una super tabla que guarde todas las tablas de todas las bases de
datos existentes en SQL Server??

Se que existe las Systable pero esta esta ubicada en cada bases de datos!!


Mil Gracias


Hernan A

Preguntas similare

Leer las respuestas

#1 Adrian D. Garcia
07/09/2004 - 01:20 | Informe spam
No, no existe tal cosa.
Esto es lo que permite realizar attachs/detachs de las bases muy facilmente.

Saludos
Adrian D. Garcia
MCSD
NDSoft Consultoria y Desarrollo

"Hernan Arboleda" wrote in message
news:%
Hola !!

Existe una super tabla que guarde todas las tablas de todas las bases de
datos existentes en SQL Server??

Se que existe las Systable pero esta esta ubicada en cada bases de datos!!


Mil Gracias


Hernan A


Respuesta Responder a este mensaje
#2 qwalgrande
07/09/2004 - 09:47 | Informe spam
Hola.

Existe sysobjects, donde se guardan todos los objetos. Lo que identifica a
las tablas es el campo type, que vale 'U'. Te adjunto un fragmento de código
que te guarda en una tabla temporal el nombre de cada tabla y la base de
datos a la que pertenece. Espero que te sirva de partida, así lo afinas y lo
adaptas a tus necesidades concretas. Usa la bd "pubs" como partida, sustituye
"use pubs" por la base de datos en la que quieras dejar la tabla temporal.

declare
@dbName sysname

set transaction isolation level read uncommitted

use pubs
if object_id('tempdb..#Tablas') is not null
drop table #Tablas

if object_id('tempdb..#tmpSDB') is not null
drop table #tmpSDB

create table #Tablas (Nombre nvarchar(510), DbName sysname)

select name into #tmpSDB from master..sysdatabases where has_dbaccess(name)
= 1

declare Curs cursor fast_forward for
select * from #tmpSDB

open Curs
fetch next from Curs into @dbName

while @@fetch_Status = 0
begin
exec ('use ' + @dbName)

if @@error <> 0
begin
fetch next from Curs into @dbName
continue
end

if exists (select * from sysobjects where name = 'dtProperties')
begin
use pubs
insert #Tablas (Nombre, DbName)
exec('select name as Nombre, ''' + @dbName + ''' as BD ' +
'from ' + @dbname + '.dbo.sysobjects where type = ''U''')


end

fetch next from Curs into @dbName

end

deallocate Curs
use pubs

select * from #Tablas order by DbName, Nombre

Espero que te sirva.

qwalgrande


"Hernan Arboleda" wrote:

Hola !!

Existe una super tabla que guarde todas las tablas de todas las bases de
datos existentes en SQL Server??

Se que existe las Systable pero esta esta ubicada en cada bases de datos!!


Mil Gracias


Hernan A



Respuesta Responder a este mensaje
#3 MAXI
07/09/2004 - 17:16 | Informe spam
Hola, eso se guarda en cada BDD y no hay una global como preguntaba nuestro
amigo :-)




Maxi

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

"qwalgrande" <qwalgrande*nospam*@yahoo.es> escribió en el mensaje
news:
Hola.

Existe sysobjects, donde se guardan todos los objetos. Lo que identifica a
las tablas es el campo type, que vale 'U'. Te adjunto un fragmento de


código
que te guarda en una tabla temporal el nombre de cada tabla y la base de
datos a la que pertenece. Espero que te sirva de partida, así lo afinas y


lo
adaptas a tus necesidades concretas. Usa la bd "pubs" como partida,


sustituye
"use pubs" por la base de datos en la que quieras dejar la tabla temporal.

declare
@dbName sysname

set transaction isolation level read uncommitted

use pubs
if object_id('tempdb..#Tablas') is not null
drop table #Tablas

if object_id('tempdb..#tmpSDB') is not null
drop table #tmpSDB

create table #Tablas (Nombre nvarchar(510), DbName sysname)

select name into #tmpSDB from master..sysdatabases where


has_dbaccess(name)
= 1

declare Curs cursor fast_forward for
select * from #tmpSDB

open Curs
fetch next from Curs into @dbName

while @@fetch_Status = 0
begin
exec ('use ' + @dbName)

if @@error <> 0
begin
fetch next from Curs into @dbName
continue
end

if exists (select * from sysobjects where name = 'dtProperties')
begin
use pubs
insert #Tablas (Nombre, DbName)
exec('select name as Nombre, ''' + @dbName + ''' as BD ' +
'from ' + @dbname + '.dbo.sysobjects where type = ''U''')


end

fetch next from Curs into @dbName

end

deallocate Curs
use pubs

select * from #Tablas order by DbName, Nombre

Espero que te sirva.

qwalgrande


"Hernan Arboleda" wrote:

> Hola !!
>
> Existe una super tabla que guarde todas las tablas de todas las bases de
> datos existentes en SQL Server??
>
> Se que existe las Systable pero esta esta ubicada en cada bases de


datos!!
>
>
> Mil Gracias
>
>
> Hernan A
>
>
>
Respuesta Responder a este mensaje
#4 ulises
07/09/2004 - 18:52 | Informe spam
También podrías obtener esa lista con:

CREATE TABLE #tablas ( TABLE_CATALOG varchar(20),
TABLE_SCHEMA varchar(20),
TABLE_NAME varchar(20) )
EXEC dbo.sp_MSforeachdb 'USE ?; INSERT INTO #tablas SELECT
TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME FROM
INFORMATION_SCHEMA.TABLES'

SELECT * FROM #tablas

Saludos,
Ulises

Hola, MAXI.

Prueba a utilizar el script que incluà­. Es una


adaptación (rà¡pida, la
verdad) de uno que tuve que usar hace un par de dà­as para


obtener, no las
todas las tablas de un servidor, si no para obtener todos


los diagramas de un
servidor. Se ajusta a lo que pidió Hernà¡n (al menos eso


creo), que era una
forma de obtener una lista de todas las tablas de todas


las bases de datos de
un servidor. Dado que no existe una "super tabla" (como


él decà­a) de esas
caracterà­sticas, habrà¡ que preparà¡rsela. Si hay algo


que veas incorrecto, que
seguramente lo haya porque lo hice a la carrera, por


favor, coméntamelo para
poder asà­ corregirlo.

qwalgrande


"MAXI" wrote:

Hola, eso se guarda en cada BDD y no hay una global




como preguntaba nuestro
amigo :-)




Maxi

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

"qwalgrande" <qwalgrande*nospam*@yahoo.es> escribió en




el mensaje
news:E38D6D22-1E48-4622-819D-





> Hola.
>
> Existe sysobjects, donde se guardan todos los




objetos. Lo que identifica a
> las tablas es el campo type, que vale 'U'. Te adjunto




un fragmento de
código
> que te guarda en una tabla temporal el nombre de cada




tabla y la base de
> datos a la que pertenece. Espero que te sirva de




partida, asà­ lo afinas y
lo
> adaptas a tus necesidades concretas. Usa la bd "pubs"




como partida,
sustituye
> "use pubs" por la base de datos en la que quieras




dejar la tabla temporal.
>
> declare
> @dbName sysname
>
> set transaction isolation level read uncommitted
>
> use pubs
> if object_id('tempdb..#Tablas') is not null
> drop table #Tablas
>
> if object_id('tempdb..#tmpSDB') is not null
> drop table #tmpSDB
>
> create table #Tablas (Nombre nvarchar(510), DbName




sysname)
>
> select name into #tmpSDB from master..sysdatabases




where
has_dbaccess(name)
> = 1
>
> declare Curs cursor fast_forward for
> select * from #tmpSDB
>
> open Curs
> fetch next from Curs into @dbName
>
> while @@fetch_Status = 0
> begin
> exec ('use ' + @dbName)
>
> if @@error <> 0
> begin
> fetch next from Curs into @dbName
> continue
> end
>
> if exists (select * from sysobjects where name




= 'dtProperties')
> begin
> use pubs
> insert #Tablas (Nombre, DbName)
> exec('select name as Nombre, ''' + @dbName




+ ''' as BD ' +
> 'from ' + @dbname + '.dbo.sysobjects where




type = ''U''')
>
>
> end
>
> fetch next from Curs into @dbName
>
> end
>
> deallocate Curs
> use pubs
>
> select * from #Tablas order by DbName, Nombre
>
> Espero que te sirva.
>
> qwalgrande
>
>
> "Hernan Arboleda" wrote:
>
> > Hola !!
> >
> > Existe una super tabla que guarde todas las tablas




de todas las bases de
> > datos existentes en SQL Server??
> >
> > Se que existe las Systable pero esta esta ubicada




en cada bases de
datos!!
> >
> >
> > Mil Gracias
> >
> >
> > Hernan A
> >
> >
> >





.

Respuesta Responder a este mensaje
#5 MAXI
07/09/2004 - 22:31 | Informe spam
Hola, yo no discutia tu Script sino que no existe una super tabla ;-), de
todos modos el Script esta bueno pero el de Ulises es mas recomendado ya que
no utiliza tablas de sistema y si vistas information_schema :-), eso hara
que se asegure la compatibilidad en futuras versiones o service Pack :-)




Maxi

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

"qwalgrande" <qwalgrande*nospam*@yahoo.es> escribió en el mensaje
news:
Hola, MAXI.

Prueba a utilizar el script que incluí. Es una adaptación (rápida, la
verdad) de uno que tuve que usar hace un par de días para obtener, no las
todas las tablas de un servidor, si no para obtener todos los diagramas de


un
servidor. Se ajusta a lo que pidió Hernán (al menos eso creo), que era una
forma de obtener una lista de todas las tablas de todas las bases de datos


de
un servidor. Dado que no existe una "super tabla" (como él decía) de esas
características, habrá que preparársela. Si hay algo que veas incorrecto,


que
seguramente lo haya porque lo hice a la carrera, por favor, coméntamelo


para
poder así corregirlo.

qwalgrande


"MAXI" wrote:

> Hola, eso se guarda en cada BDD y no hay una global como preguntaba


nuestro
> amigo :-)
>
>
>
>
> Maxi
>
> Buenos Aires - Argentina
> Desarrollador .NET 3 Estrellas
> Microsoft User Group (MUG)
> Mail: Maxi_accotto[arroba]speedy.com.ar
> Msn Messager:
>
> "qwalgrande" <qwalgrande*nospam*@yahoo.es> escribió en el mensaje
> news:
> > Hola.
> >
> > Existe sysobjects, donde se guardan todos los objetos. Lo que


identifica a
> > las tablas es el campo type, que vale 'U'. Te adjunto un fragmento de
> código
> > que te guarda en una tabla temporal el nombre de cada tabla y la base


de
> > datos a la que pertenece. Espero que te sirva de partida, así lo


afinas y
> lo
> > adaptas a tus necesidades concretas. Usa la bd "pubs" como partida,
> sustituye
> > "use pubs" por la base de datos en la que quieras dejar la tabla


temporal.
> >
> > declare
> > @dbName sysname
> >
> > set transaction isolation level read uncommitted
> >
> > use pubs
> > if object_id('tempdb..#Tablas') is not null
> > drop table #Tablas
> >
> > if object_id('tempdb..#tmpSDB') is not null
> > drop table #tmpSDB
> >
> > create table #Tablas (Nombre nvarchar(510), DbName sysname)
> >
> > select name into #tmpSDB from master..sysdatabases where
> has_dbaccess(name)
> > = 1
> >
> > declare Curs cursor fast_forward for
> > select * from #tmpSDB
> >
> > open Curs
> > fetch next from Curs into @dbName
> >
> > while @@fetch_Status = 0
> > begin
> > exec ('use ' + @dbName)
> >
> > if @@error <> 0
> > begin
> > fetch next from Curs into @dbName
> > continue
> > end
> >
> > if exists (select * from sysobjects where name = 'dtProperties')
> > begin
> > use pubs
> > insert #Tablas (Nombre, DbName)
> > exec('select name as Nombre, ''' + @dbName + ''' as BD ' +
> > 'from ' + @dbname + '.dbo.sysobjects where type = ''U''')
> >
> >
> > end
> >
> > fetch next from Curs into @dbName
> >
> > end
> >
> > deallocate Curs
> > use pubs
> >
> > select * from #Tablas order by DbName, Nombre
> >
> > Espero que te sirva.
> >
> > qwalgrande
> >
> >
> > "Hernan Arboleda" wrote:
> >
> > > Hola !!
> > >
> > > Existe una super tabla que guarde todas las tablas de todas las


bases de
> > > datos existentes en SQL Server??
> > >
> > > Se que existe las Systable pero esta esta ubicada en cada bases de
> datos!!
> > >
> > >
> > > Mil Gracias
> > >
> > >
> > > Hernan A
> > >
> > >
> > >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida