2009-02-14 59 views
15

我在數據庫RentalEase中有20個左右的表格,我想將它們打印出來(物理上),這樣我可以更輕鬆地查看它們。我不關心他們的數據是什麼,只是他們的結構。我怎樣才能做到這一點?打印表格的結構/模式

這是一個SQL Express服務器,我使用Microsoft SQL Server Management Studio Express來管理它。我記得當我使用MySQL和PHP時,我可以使用DESCRIBE打印出來,但我不記得我是如何做到的。似乎沒有成爲一個描述的SQL Server

回答

28

嘗試:

sp_help <table_name> 
+0

我每天都使用它,但你可以刪除EXEC – banjollity 2009-02-19 19:53:03

+4

不公平!你編輯了它... – banjollity 2009-02-21 17:21:54

4

您可以使用數據庫架構圖設計工具。剛落,所有的表那裏,你會得到你的數據庫包括所有按鍵

6

在Management Studio中的圖表,

  1. 點擊「+」旁邊的數據庫擴展它下面的對象,然後點擊「表」
  2. 打開通過選擇「視圖」表詳細視圖 - >「對​​象資源管理器詳細信息」,從菜單
  3. 現在選擇(在物體細節的右手側)的所有表
  4. 右鍵點擊任何選定的表(在右側)
  5. 「腳本表作爲」 - >「創建爲」
  6. 「文件」或「剪貼板」

這將產生一個包含所有選擇的文件模式定義的腳本文件。

9

您可以隨時檢查INFORMATION_SCHEMA視圖以查找有關表格及其列的所有有趣信息。

這不是所謂的「描述」本身 - 但此查詢會告訴你很多信息:

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

馬克

2

這裏是一個腳本,我寫的只是列出了每個表和它們在列喜歡的格式:

表列

表1列1,列2 ... columnX

的腳本是:

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