系統開發過中,資料字典表的
更新你們是否發現,
在系統開發過程中,你的在不停的改變,最初發給每個開發人員的資料表定義,
已經變得面目全非了,如果你這個這個專案開發的負責人,下面的人老是說,怎麼資料表又變了
怎麼也不通知我們呢,有時候工作繁忙,也不一定能夠通知到所有的開發人員。
為此,我特地作了乙個自動化的工具,每當資料表又大的變動時,你不需要再次去修改原始資料字典文件了
你只要按照我的步驟來做,保證這一切在2分鐘之內,幫你搞定資料字典文件的
更新。注意本方法,只針對ms2000。很遺憾,這一切,還沒有做到完全自動化,誰有這個興趣,完善它,我相信到時候,這一切會在1分鐘之內搞定。
1. 在你的系統資料庫中,建立以下儲存過程
該儲存過程是獲取資料字典資訊
createproceduregetalltableinfoas
begin
declare@au_idvarchar(11),@strnamevarchar(50),@tidint,@strownervarchar(50)
--獲取所有的使用者表資訊
declareall_tablescursor
forselectconvert(varchar,name),idfromsysobjectswherextype='u'orderbyname
createtable#colinfo
(tnamevarchar(50), --表名稱
colnamevarchar(50), --列名稱
remarksql_variant, --注釋
typevarchar(50), --資料型別
defaultvaluevarchar(255), --預設值
isallownullvarchar(10), --是否允許為空
isprimarykeychar(2) --是否為主鍵,用*標記
)--主鍵資訊
createtable#pkinfo
(table_qualifiervarchar(50),
table_ownervarchar(50),
table_namevarchar(50),
column_namevarchar(50),
key_seqint,
pk_namevarchar(50)
)set@strowner=user_name()
openall_tables
fetchnextfromall_tablesinto@strname,@tid
while@@fetch_status=0
begin
--插入表及其注釋資訊
insertinto#colinfo
select@strname,'',isnull(value,''),'','','',''
from(select@strnametname)aleftjoin
::fn_listextendedproperty('ms_description',n'user',n'dbo',n'table',@strname,null,null) --表的注釋資訊
on1=1
--插入列資訊
insertinto#colinfo
select@strname,c.namecname,convert(varchar,r.value)+(casec.statuswhen0x80thenchar(13)+char(10)+'自動增長列'else''end),
(casewhen(c.xtype>=34andc.xtype<=58)orc.xtypein(61,98,99,104,127,189)thent.namewhenc.xtypein(59,60,106,108,122)thent.name+'('+convert(varchar,c.xprec)+','+convert(varchar,c.xscale)+')'elset.name+'('+convert(varchar,c.length)+')'end),
isnull(def.text,''),
caseisnullablewhen1then'是'else'否'end,
''from(systypest
innerjoin
(syscolumnsc
leftjoin
syscommentsdef
onc.cdefault=def.idand1=def.colid
)ont.xtype=c.xtypeandt.xusertype=c.xusertype
)leftjoin
::fn_listextendedproperty('ms_description',n'user',n'dbo',n'table',@strname,n'column',null)r--列的注釋資訊
onconvert(varchar,r.objname)=convert(varchar,c.name)
wherec.id=object_id(@strname)
insertinto#pkinfoexec[dbo].[sp_pkeys]@strname,@strowner,default
fetchnextfromall_tablesinto@strname,@tid
end--
更新主鍵資訊
update#colinfo
setisprimarykey='是'
from#pkinfo
where#pkinfo.table_name=#colinfo.tnameand#pkinfo.column_name=#colinfo.colname
closeall_tables
deallocateall_tables
select'%%%%'objname,''remark,''col1,''col2,''col3,''col4,tname,0flag
from#colinfo
wherecolname=''
union
select '表名:'+tname,remark,'','','','',tname,1flag
from#colinfo
wherecolname=''
union
select'列名','注釋','資料型別','預設值','是否允許空','主鍵',tname,2
from#colinfo
wherecolname=''
union
selectcolname,remark,type,defaultvalue,isallownull,
isprimarykey,tname,3
from#colinfo
wherecolname<>''
orderby7,8,3
droptable#pkinfo
droptable#colinfo
end2. mssqlsever提供的查詢分析器中,
execgetalltableinfo
3. 將查詢結果資訊,複製到mssheet中共2頁 1
300分鐘搞定資料結構與演算法課程學習 2 列表
鍊錶 linkedlist 單鏈表 鍊錶中的每個元素實際上是乙個單獨的物件,而所有物件都通過每個元素中的引用字段鏈結在一起。雙鏈表 與單鏈表不同的是,雙鏈表的每個結點中都含有兩個引用字段。鍊錶的優缺點 鍊錶的優點如下 鍊錶能靈活地分配記憶體空間 能在 o 1 時間內刪除或者新增元素,前提是該元素的前...
300分鐘搞定資料結構與演算法課程學習2 棧
棧 stack 特點 棧的最大特點就是後進先出 lifo 對於棧中的資料來說,所有操作都是在棧的頂部完成的,只可以檢視棧頂部的元素,只能夠向棧的頂部壓 資料,也只能從棧的頂部彈出資料。實現 利用乙個單鏈表來實現棧的資料結構。而且,因為我們都只針對棧頂元素進行操作,所以借用單鏈表的頭就能讓所有棧的操作...
300分鐘搞定資料結構與演算法課程學習2 佇列
佇列 queue 特點 和棧不同,佇列的最大特點是先進先出 fifo 就好像按順序排隊一樣。對於佇列的資料來說,我們只允許在隊尾檢視和新增資料,在隊頭檢視和刪除資料。實現 可以借助雙鏈表來實現佇列。雙鏈表的頭指標允許在隊頭檢視和刪除資料,而雙鏈表的尾指標允許我們在隊尾檢視和新增資料。應用場景 直觀來...