SQL腳本獲取指定SQLServer數據庫所有表及視圖的字段列表及類型、長度


今天在客戶這里發布更新版本的Socket程序,此次發布的更新版本因為涉及修改的地方比較多,程序方面有,數據庫方面也有。程序都有版本控制,相對比較容易控制檢查。但是數據庫方面由於之前沒有加入版本控制,所以檢查起來就比較難了。起初考慮將正式系統數據庫和測試系統數據庫都導出一份生成腳本,用於進行比對,但是導出之后發現生成的順序不同,上兆的文件沒有辦法進行比對。

 

由於此次升級主要是新增,所以記得只是新增加了兩個表,修改了幾個表中的已有字段長度,並增加了字段,所以考慮自己寫一個腳本用於將數據庫中所有表及字段的名稱、類型及長度都顯示出來然后進行比對。

 

大概的思路就是利用系統表中存儲的信息來進行數據庫結構獲取,相對還是比較簡單的。腳本如下:

 

Select o.Name As ObjectsName , c.name As ColumnsName , t.name As ColumnsType , c.length As ColumnsLength
From SysObjects As o , SysColumns As c , SysTypes As t
Where o.type in ('u','v') And o.id = c.id And c.xtype = t.xtype
Order By o.name , c.name , t.name , c.Length

 

 

下面簡要說明一下:

SysObjects
在數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在表中占一行。只有在 tempdb 內,每個臨時對象才在該表中占一行。

SysColumns
每個表和視圖中的每列在表中占一行,存儲過程中的每個參數在表中也占一行。該表位於每個數據庫中。

SysTypes

每種數據類型和用戶定義數據類型的詳細信息。

 

更加詳細的內容就不多寫了,網絡上一搜就到處都是,自己備注一下,下次更新還能用得到。呵呵


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM