|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Memory所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在Mysql重新启动时丢失数据
体系开辟过中,数据字典表的更新
你们是不是发明,
在体系开辟过程当中,你的数据库在一直的改动,最后发给每一个开辟职员的数据表界说,
已变得改头换面了,假如你这个这个项目开辟的卖力人,上面的人先生说,怎样数据表又变了
怎样也欠亨知我们呢,偶然候事情忙碌,也纷歧定可以关照到一切的开辟职员。
为此,我专程作了一个主动化的工具,每当数据表又年夜的变化时,你不必要再次往修正原始数据字典文档了
你只需依照我的步骤来做,包管这统统在2分钟以内,帮你弄定命据字典文档的更新。
注重本办法,只针对MSSQLServer2000。很遗憾,这统统,还没有做到完整主动化,谁有这个乐趣,完美它,我信任到时分,这统统会在1分钟以内弄定。
1.在你的体系数据库中,创立以下存储历程
该存储历程是猎取数据字典信息
createProcedureGetAllTableInfoAs
begin
DECLARE@au_idvarchar(11),@strNamevarchar(50),@Tidint,@strOwnervarchar(50)
--猎取一切的用户表信息
DECLAREAll_TablesCURSOR
FORselectconvert(varchar,Name),IDfromsysobjectswherextypE=UorderbyName
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,NUSER,Ndbo,NTable,@strName,NULL,NULL)--表的正文信息
ON1=1
--拔出列信息
insertinto#ColInfo
select@strName,C.nameCName,convert(varchar,R.value)+(casec.statuswhen0x80thenchar(13)+char(10)+主动增加列elseend),
(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,NUSER,Ndbo,NTable,@strName,NColumn,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
end
2.MSSQLSever供应的查询剖析器中,
ExecGetAllTableInfo
3.将查询了局信息,复制到MSExcelSheet中4.在MSExcelSheet中,删撤除最初两列5.全选Sheet信息,复制到MSWord中,实行上面Word宏命令
SubMacro1()
Macro1Macro
宏在2004-3-12由徐侠君录制
A:
Selection.Find.ClearFormatting
WithSelection.Find
.Text="%%%%"
.Replacement.Text=""
.Forward=True
.Wrap=wdFindContinue
.Format=False
.MatchCase=False
.MatchWholeWord=False
.MatchByte=True
.MatchWildcards=False
.MatchSoundsLike=False
.MatchAllWordForms=False
EndWith
IfSelection.Find.ExecuteThen
Selection.DeleteUnit:=wdCharacter,Count:=1
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.Cells.Merge
Selection.MoveDownUnit:=wdLine,Count:=1
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.MoveLeftUnit:=wdCharacter,Count:=1,Extend:=wdExtend
Selection.Font.Bold=wdToggle
Selection.MoveRightUnit:=wdCharacter,Count:=1
Selection.SelectCell
Selection.MoveRightUnit:=wdCharacter,Count:=4,Extend:=wdExtend
Selection.Cells.Merge
Selection.MoveDownUnit:=wdLine,Count:=1
Selection.HomeKeyUnit:=wdLine,Extend:=wdExtend
Selection.MoveLeftUnit:=wdCharacter,Count:=2
Selection.HomeKeyUnit:=wdLine
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.EndKeyUnit:=wdLine,Extend:=wdExtend
Selection.Font.Bold=wdToggle
Selection.MoveDownUnit:=wdLine,Count:=2
GoToA
Else
MsgBox"修正各是乐成"
EndIf
EndSub
1.假如还发明那些中央不切合你的请求,请本人完美修复过程包含最多4个阶段,在下面描述。在你开始前,你应该cd到数据库目录和检查表文件的权限,确保他们可被运行mysqld的Unix用户读取(和你,因为你需要存取你正在检查的文件)。如果它拒绝你修改文件,他们也必须是可被你写入的。 |
|