2009-02-14 12 views
15

Tengo como 20 o más tablas en la base de datos RentalEase y quiero imprimirlas (físicamente) para poder verlas más fácilmente. No me importa demasiado qué datos hay en ellos, solo su estructura. ¿Cómo puedo hacer esto?Printing Table's structure/schema

Es un servidor SQL Express y estoy usando Microsoft SQL Server Management Studio Express para administrarlo. Recuerdo que cuando estaba usando MySQL y PHP podía usar DESCRIBE para imprimirlo, pero no recuerdo cómo lo hice. No parece ser un describirá el uso de SQL Server

Respuesta

28

intento:

sp_help <table_name> 
+0

utilizo este diario, pero se puede caer el EXEC – banjollity

+4

No es justo! Usted lo editó ... – banjollity

+3

Estaba desconcertado por qué esto no funcionó hasta que me di cuenta de que '' tenía que ser ''dbname.schema.tablename'' así que algo así como' 'mydb.dbo.mytable'' –

4

Puede utilizar la base de datos de esquema herramienta de diseño Diagrama. Sólo tienes que arrastrar todas las mesas allí, y obtendrá el diagrama de que la base de datos que incluye todas las claves

6

En Management Studio,

  1. Haga clic en el signo "+" al lado de su base de datos de la ampliación de los objetos debajo de ella y haga clic en "tablas"
  2. Abrir la vista de detalle tablas seleccionando la opción "Ver" -> "Explorador de objetos detalles" en el menú
  3. Ahora seleccione todas las tablas (en el lado derecho en los detalles del objeto)
  4. haga clic derecho en cualquiera de las tablas seleccionadas (en el lado derecho)
  5. "tabla de secuencias de comandos como" -> "Crear para"
  6. "archivo" o "portapapeles"

Esto producirá un archivo de script que contiene todas las definiciones de esquema de archivos seleccionados.

+1

No una solución adecuada para IMAO que vale la pena enumerar aquí. –

9

Siempre puede inspeccionar las vistas INFORMATION_SCHEMA para encontrar toda la información interesante acerca de las tablas y sus columnas.

No se llama "describen" per se - pero esta consulta le mostrará una gran cantidad de información:

select * from Information_schema.Columns 
where table_name = '(your table here)' 

Marc

2

Aquí es un guión que escribí que se limita a enumerar cada tabla y sus columnas en un formato como:

Columnas de la tabla

COLUMN1 tabla1, columna2 ... Columnx

El guión es:

declare @max_tables int 
declare @max_columns int 
declare @sql nvarchar(400) 
declare @x int 
declare @y int 
declare @table varchar(50) 
declare @columns varchar(800) 

create table #c ([Table] varchar(50),[Columns] varchar(800)) 

select ROW_NUMBER() OVER(ORDER BY name) AS Row, name 
into #table_list 
from sys.objects 
where type_desc = 'USER_TABLE' 
order by name 

set @max_tables = (select count(*) from sys.objects where type_desc = 'USER_TABLE') 
set @y = 0 

while @y < @max_tables 
    begin 
     set @y = @y + 1 
     set @table = (select name from #table_list where row = @y) 

     create table #t (c int) 

     set @sql = 'select count(*) as c from Information_schema.Columns where table_name = ''' + @table + '''' 
     insert into #t exec sp_executesql @sql 

     set @max_columns = (select top 1 c from #t) 

     DROP TABLE #t 

     set @x = 0 
     set @columns = '' 

     while @x < @max_columns 
      begin 
       set @x = @x + 1 
       set @columns = @columns + (select column_name from Information_schema.Columns where table_name = @table and ordinal_position = @x) 
       if @x < @max_columns set @columns = @columns + ', ' 
      end 

     insert into #c select @table,@columns 

    end 

select * from #c 

DROP TABLE #c 
DROP TABLE #table_List