大大毛 的笔记

  DDM's Note

哪怕没有办法一定有说法,
就算没有鸽子一定有乌鸦,
固执无罪 梦想有价,
让他们惊讶.

posts - 14, comments - 23, trackbacks - 0, articles - 58
   :: 首页 ::  :: 联系 ::  :: 管理

SQLServer數據庫結構的獲取

Posted on 2006-11-21 22:54 大大毛 阅读(739) 评论(0)  编辑  收藏 所属分类: SQL
   這段時間好不容易找著一份臨時工,工作難找,只有苦干了。由於現在的項目需要通過VPN來連接遠程的網絡,工作中經常需要通過遠程桌面的方式來查看遠程主機上的SQLServer系統的庫/表及數據集的特征和結構,但是同時連接的數量卻是有限,沒有辦法只能自行使用Select语句以獲取自己所需的資料了。

      日常的需求是:
      1.知道該DBMS上存在有哪些數據庫
      2.知道具體的庫上存在有哪些用戶表
      3.知道表的字段結構,類型,寬度以及Select順序
      4.獲取表中的特征數據

      而要從SQLServer的DBMS中獲取以上資料非常容易,只要具有權限,通過簡單的SQL語句即可實現。

      1.獲取DBMS上存在有哪些數據庫
select
        name,
        dbid
    
from
        master.dbo.sysdatabases
    
WHERE
        name 
not in ('master','tempdb','model','msdb')

      2.獲取具體的庫上存在有哪些用戶表
select
        name,
        id
    
from
        
[ddmDataBaseName].dbo.sysobjects
    
where
        xtype 
='U'
         這條SQL語句需要傳遞一個參數(數據庫的名稱)以替換 [ddmDataBaseName] 參數。

      3.獲取表的字段結構,類型,寬度以及Select順序
select
        col.name colName,
        type_Name(col.xtype) colType,
        col.length colWidth,
        
case isnullable when 1 then '允許' else '禁止' end  nullable
    
from
        
[ddmDataBaseName].dbo.syscolumns col join [ddmDataBaseName].dbo.sysobjects tab on col.id = tab.id
    
where
        tab.xtype 
='U'
        
and tab.name='[ddmTableName]'
    
order by
        tab.id,
        col.colorder
         同樣的,這條SQL語句需要傳遞兩個參數:
         [ddmDataBaseName]:數據庫名稱
         [ddmTableName]:表名稱

      4.獲取表的特征數據集
select
        
top 200 *
    
from
        
[ddmDataBaseName].dbo.[ddmTableName]
    
Order by
        
NewID()
         由于表的记录条数可能会很大,通常并不需要全部Select出来,因此使用了 Top 200 的关键字,而为了能够随机抽取数据,这里使用了 Order by NewID() 。
         通过使用 3 + 4 的组合可以很容易地拼装出一张表格出来,以便在日常工作中使用。

      由于现在工作的系统是 繁体系统,上班时又封网,搞到文章中显得简繁一体了,呵呵。

只有注册用户登录后才能发表评论。


网站导航:
 

i am ddm