/*MS SQL新旧库数据字典比较脚本*/
--注明1:新旧库必须在同一数据库服务器同一实例中,最好以Sa身份登入。
--注明2:本脚本可作为系统升级改造,得到相关信息后作数据迁移之用。
declare @i int
set @i=4 /*注明3:1为要得到新库增加的数据字典信息;
2为要得到旧库多出的数据字典信息;
3为要得到新库增加的表的数据字典信息;
4为要得到旧库多出的表的数据字典信息 */
use temp --打开旧库
SELECT sysobjects.name AS [table], CASE WHEN CAST(sysproperties.[value] AS varchar)
IS NULL THEN '' ELSE CAST(sysproperties.[value] AS varchar) END AS 表说明,
syscolumns.name AS field, CASE WHEN CAST(properties.[value] AS varchar) IS NULL
THEN '' ELSE CAST(properties.[value] AS varchar) END AS 字段说明,
systypes.name AS type, syscolumns.length,
ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'Scale'), 0)
AS 小数位数, syscolumns.isnullable AS isnull,
CASE WHEN syscomments.text IS NULL
THEN '' ELSE syscomments.text END AS [Default],
CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'IsIdentity')
= 1 THEN '√' ELSE '' END AS 标识, CASE WHEN EXISTS
(SELECT 1
FROM sysobjects
WHERE xtype = 'PK' AND name IN
(SELECT name
FROM sysindexes
WHERE indid IN
(SELECT indid
FROM sysindexkeys
WHERE id = syscolumns.id AND colid = syscolumns.colid)))
THEN '√' ELSE '' END AS 主键 into #old
FROM syscolumns INNER JOIN
sysobjects ON sysobjects.id = syscolumns.id INNER JOIN
systypes ON syscolumns.xtype = systypes.xtype LEFT OUTER JOIN
sysproperties properties ON syscolumns.id = properties.id AND
syscolumns.colid = properties.smallid LEFT OUTER JOIN
sysproperties ON sysobjects.id = sysproperties.id AND
sysproperties.smallid = 0 LEFT OUTER JOIN
syscomments ON syscolumns.cdefault = syscomments.id
WHERE (sysobjects.xtype = 'U')
use accdb --打开新库
SELECT sysobjects.name AS [table], CASE WHEN CAST(sysproperties.[value] AS varchar)
IS NULL THEN '' ELSE CAST(sysproperties.[value] AS varchar) END AS 表说明,
syscolumns.name AS field, CASE WHEN CAST(properties.[value] AS varchar) IS NULL
THEN '' ELSE CAST(properties.[value] AS varchar) END AS 字段说明,
systypes.name AS type, syscolumns.length,
ISNULL(COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'Scale'), 0)
AS 小数位数, syscolumns.isnullable AS isnull,
CASE WHEN syscomments.text IS NULL
THEN '' ELSE syscomments.text END AS [Default],
CASE WHEN COLUMNPROPERTY(syscolumns.id, syscolumns.name, 'IsIdentity')
= 1 THEN '√' ELSE '' END AS 标识, CASE WHEN EXISTS
(SELECT 1
FROM sysobjects
WHERE xtype = 'PK' AND name IN
(SELECT name
FROM sysindexes
WHERE indid IN
(SELECT indid
FROM sysindexkeys
WHERE id = syscolumns.id AND colid = syscolumns.colid)))
THEN '√' ELSE '' END AS 主键 into #new
FROM syscolumns INNER JOIN
sysobjects ON sysobjects.id = syscolumns.id INNER JOIN
systypes ON syscolumns.xtype = systypes.xtype LEFT OUTER JOIN
sysproperties properties ON syscolumns.id = properties.id AND
syscolumns.colid = properties.smallid LEFT OUTER JOIN
sysproperties ON sysobjects.id = sysproperties.id AND
sysproperties.smallid = 0 LEFT OUTER JOIN
syscomments ON syscolumns.cdefault = syscomments.id
WHERE (sysobjects.xtype = 'U')
if @i=1
begin
select n.* --新库与旧库相比较后新库增加的数据字典信息
from #new n left join #old o on n.[table]=o.[table] and n.field=o.field where o.[table] is null
or o.field is null order by n.[table],n.field
end
else
begin
if @i=2
begin
select o.* --新库与旧库相比较后旧库多出的数据字典信息
from #new n right join #old o on n.[table]=o.[table] and n.field=o.field where n.[table] is null
or n.field is null order by o.[table],o.field
end
else
begin
if @i=3
begin
select * --新库与旧库相比较后新库增加的表的数据字典信息
from #new where [table] <> all(select [table] from #old ) order by [table],field
end
else
begin
if @i=4
begin
select * --新库与旧库相比较后旧库多出的表的数据字典信息
from #old where [table] <> all(select [table] from #new ) order by [table],field
end
else
begin
select '出错啦'
end
end
end
end
drop table #old
drop table #new
分享到:
相关推荐
"ajax asp.net毕业设计-相当精美个人呕心沥血之作" 这个标题揭示了这是一个基于ASP.NET技术的毕业设计项目,其中应用了Ajax技术以实现无刷新用户界面,同时强调了项目的高质量和设计者投入的巨大精力。Ajax...
tarjan算法呕心沥血之作,动画演示,步步清晰可见,详细的描述了tarjan算法的工作过程,比网上的单纯的图片更加容易理解。
【标题】"考研,呕心沥血之文史完全整理版"揭示了这是一份针对考研学子精心编纂的文史复习资料。这份文档可能是由经验丰富的教师或研究生根据历年考研大纲、真题以及相关教材内容汇编而成,旨在帮助备考者系统、全面...
自己写的分页类,是通用类,可以直接调用。在struts,spring中都没问题
众所周知,camunda是由activiti5演变而来的,所以由activiti5迁移到camunda是非常丝滑的,官网上也有迁移需要的sql脚本,但是activiti6的迁移官网原文是这么说的:If you are on a more recent Activiti version or ...
### CAN总线呕心沥血教程精要解析 #### 一、CAN总线基础概念 CAN(Controller Area Network,控制器局域网络)是一种用于实时应用的串行通信协议标准,最早由德国Bosch公司在20世纪80年代初为汽车工业设计。随着...
Hive 是一个基于 Hadoop 的数据仓库工具,它允许用户使用类似 SQL 的查询语言(HQL)来处理存储在 Hadoop 分布式文件系统(HDFS)上的大规模数据集。Hive 提供了数据汇总、分析和查询功能,非常适合批处理分析任务。...
DBMS作为执行SQL和管理数据的中间层,连接了SQL语言和数据库。 ### MySQL使用与操作 #### MySQL安装与卸载 安装MySQL通常是一个“傻瓜式”的过程,涉及双击安装包开始安装。若需卸载MySQL,可以双击安装包进行卸载...
c#封装的矩阵类,好东西不要嫌贵,本人创作它的时候四处都找不到全面的参考资料,我第一个创作出来自然贵点,包含了矩阵的+ - *运算符重载,方程求解gass完全主元法,JACIBO叠带法,GassSeid叠带法,矩阵的LU,QR,...
经过我几周呕心沥血的制造,终于甘出来了,内容免费,但希望大家给个宝贵的赞,谢谢!
思科数据中心CCIE学习笔记涵盖的主题主要围绕Nexus系列交换机展开,这是思科公司推出的专门用于数据中心的高端交换机产品线。学习笔记中详细讲解了Nexus系列交换机的硬件架构、不同型号机框和线卡的特点、以及各项...
深入学习分布鲁棒优化的程序,基于PCA的电力系统分布鲁棒优化,考虑机组组合和风力等,基于IEEE 6 118 300节点测试系统。结果正确,收敛性强。 运行环境:matlab+gurobi/cplex
vlookup黄金教程,excelhome数位版主呕心沥血之作!
地下车库防水技术交底【呕心沥血整理版】.pdf
常见Linux & Git相关问题解决方案(呕心沥血制作)
本人呕心沥血之作 附加2005数据库 peizhi.ini 放入C盘目录下(在计算器第一次启动后就可以删除) 模仿CASIO计算机 附加功能很多 比如局域网聊天,换皮肤,方差,平方差 大家可以慢慢琢磨
部编小学语文古诗文言文--呕心沥血制作.doc
作者呕心沥血之作,转自老莫的博客。
" ARM 呕心沥血整理(必过总结)" 一、ARM 芯片的特点 ARM 芯片具有 RISC 体系的一般特点,包括: 1. 精简指令集 2. 大量的寄存器 3. 绝大多数操作都在寄存器中进行 4. 通过 Load/Store 的体系结构在内存和寄存器...
ERP实施呕心沥血谈,多年的工作总结,对于从事ERP行业的人来说是很有帮助的