仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 739|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL网页设计MS SQL新旧库数据字典对照剧本

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。对照|剧本|数据/*MSSQL新旧库数据字典对照剧本*/--说明1:新旧库必需在统一数据库服务器统一实例中,最好以Sa身份登进。
--说明2:本剧本可作为体系晋级改革,失掉相干信息后作数据迁徙之用。
declare@iint
set@i=4/*说明3:1为要失掉新库增添的数据字典信息;
2为要失掉旧库多出的数据字典信息;
3为要失掉新库增添的表的数据字典信息;
4为要失掉旧库多出的表的数据字典信息*/

usetemp--翻开旧库
SELECTsysobjects.nameAS[table],CASEWHENCAST(sysproperties.[value]ASvarchar)
ISNULLTHENELSECAST(sysproperties.[value]ASvarchar)ENDAS表申明,
syscolumns.nameASfield,CASEWHENCAST(properties.[value]ASvarchar)ISNULL
THENELSECAST(properties.[value]ASvarchar)ENDAS字段申明,
systypes.nameAStype,syscolumns.length,
ISNULL(COLUMNPROPERTY(syscolumns.id,syscolumns.name,Scale),0)
AS小数位数,syscolumns.isnullableASisnull,
CASEWHENsyscomments.textISNULL
THENELSEsyscomments.textENDAS[Default],
CASEWHENCOLUMNPROPERTY(syscolumns.id,syscolumns.name,IsIdentity)
=1THEN√ELSEENDAS标识,CASEWHENEXISTS
(SELECT1
FROMsysobjects
WHERExtype=PKANDnameIN
(SELECTname
FROMsysindexes
WHEREindidIN
(SELECTindid
FROMsysindexkeys
WHEREid=syscolumns.idANDcolid=syscolumns.colid)))
THEN√ELSEENDAS主键into#old
FROMsyscolumnsINNERJOIN
sysobjectsONsysobjects.id=syscolumns.idINNERJOIN
systypesONsyscolumns.xtype=systypes.xtypeLEFTOUTERJOIN
syspropertiespropertiesONsyscolumns.id=properties.idAND
syscolumns.colid=properties.smallidLEFTOUTERJOIN
syspropertiesONsysobjects.id=sysproperties.idAND
sysproperties.smallid=0LEFTOUTERJOIN
syscommentsONsyscolumns.cdefault=syscomments.id
WHERE(sysobjects.xtype=U)

useaccdb--翻开新库
SELECTsysobjects.nameAS[table],CASEWHENCAST(sysproperties.[value]ASvarchar)
ISNULLTHENELSECAST(sysproperties.[value]ASvarchar)ENDAS表申明,
syscolumns.nameASfield,CASEWHENCAST(properties.[value]ASvarchar)ISNULL
THENELSECAST(properties.[value]ASvarchar)ENDAS字段申明,
systypes.nameAStype,syscolumns.length,
ISNULL(COLUMNPROPERTY(syscolumns.id,syscolumns.name,Scale),0)
AS小数位数,syscolumns.isnullableASisnull,
CASEWHENsyscomments.textISNULL
THENELSEsyscomments.textENDAS[Default],
CASEWHENCOLUMNPROPERTY(syscolumns.id,syscolumns.name,IsIdentity)
=1THEN√ELSEENDAS标识,CASEWHENEXISTS
(SELECT1
FROMsysobjects
WHERExtype=PKANDnameIN
(SELECTname
FROMsysindexes
WHEREindidIN
(SELECTindid
FROMsysindexkeys
WHEREid=syscolumns.idANDcolid=syscolumns.colid)))
THEN√ELSEENDAS主键into#new
FROMsyscolumnsINNERJOIN
sysobjectsONsysobjects.id=syscolumns.idINNERJOIN
systypesONsyscolumns.xtype=systypes.xtypeLEFTOUTERJOIN
syspropertiespropertiesONsyscolumns.id=properties.idAND
syscolumns.colid=properties.smallidLEFTOUTERJOIN
syspropertiesONsysobjects.id=sysproperties.idAND
sysproperties.smallid=0LEFTOUTERJOIN
syscommentsONsyscolumns.cdefault=syscomments.id
WHERE(sysobjects.xtype=U)

if@i=1
begin
selectn.*--新库与旧库比拟较后新库增添的数据字典信息
from#newnleftjoin#oldoonn.[table]=o.[table]andn.field=o.fieldwhereo.[table]isnull
oro.fieldisnullorderbyn.[table],n.field
end
else
begin
if@i=2
begin
selecto.*--新库与旧库比拟较后旧库多出的数据字典信息
from#newnrightjoin#oldoonn.[table]=o.[table]andn.field=o.fieldwheren.[table]isnull
orn.fieldisnullorderbyo.[table],o.field
end
else
begin
if@i=3
begin
select*--新库与旧库比拟较后新库增添的表的数据字典信息
from#newwhere[table]all(select[table]from#old)orderby[table],field
end
else
begin
if@i=4
begin
select*--新库与旧库比拟较后旧库多出的表的数据字典信息
from#oldwhere[table]all(select[table]from#new)orderby[table],field
end
else
begin
select堕落啦
end
end
end
end
droptable#old
droptable#new

任何规模的组织都可能受益于外包服务,并在一个标准化和优化的平台上统一其数据库管理任务。基于其本身的特性,DBaaS提供了敏捷和高效的数据库服务,它可以支持多变的需求。
精灵巫婆 该用户已被删除
沙发
发表于 2015-1-19 15:51:31 | 只看该作者
但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。
若相依 该用户已被删除
板凳
发表于 2015-1-28 07:39:12 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
海妖 该用户已被删除
地板
发表于 2015-2-5 18:03:46 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
冷月葬花魂 该用户已被删除
5#
发表于 2015-2-13 04:09:48 | 只看该作者
光写几个SQL实在叫无知。
再见西城 该用户已被删除
6#
发表于 2015-3-3 14:20:20 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
不帅 该用户已被删除
7#
发表于 2015-3-11 11:27:31 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
谁可相欹 该用户已被删除
8#
发表于 2015-3-18 08:52:32 | 只看该作者
大家注意一点。如下面的例子:
再现理想 该用户已被删除
9#
发表于 2015-3-25 15:46:10 | 只看该作者
一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-3 21:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表