mysql数据依赖关系_发现数据库对象的依赖关系
SQL Server Management Studio中有一个很有意思的工具,可以查看某个对象的依赖和被依赖关系。如下图所示
假设,我们自己的程序也要实现这样的功能,那么该怎么做呢?
1. 首先,创建一个项目,添加以下三个引用
2. 用如下代码测试
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Management.Smo;
namespace DiscovDepedency
{
class Program
{
///
/// 这个程序演示了如何发现数据库对象的依赖关系
/// 作者:陈希章
///
///
static void Main(string[] args)
{
Server svr = new Server("localhost");
Database db = svr.Databases["Northwind"];
Table tb = db.Tables["Orders"];
DependencyWalker walker = new DependencyWalker(svr);//这是检测关系的一个工具
//检测依赖该对象的所有其他对象
Console.WriteLine("依赖Orders表的所有对象");
DependencyTree tree = walker.DiscoverDependencies(new[] { tb }, DependencyType.Children);
foreach (var item in walker.WalkDependencies(tree))
{
var xpath = item.Urn.XPathExpression;
var type = item.Urn.Type;
Console.WriteLine("\tType:{0},Name:{1}", type, string.Format("{0}.{1}",xpath.GetAttribute("Schema",type),xpath.GetAttribute("Name",type)));
}
Console.WriteLine("Orders表所依赖的其他对象");
DependencyTree tree2 = walker.DiscoverDependencies(new[] { tb }, DependencyType.Parents);
foreach (var item in walker.WalkDependencies(tree2))
{
var xpath = item.Urn.XPathExpression;
var type = item.Urn.Type;
Console.WriteLine("\tType:{0},Name:{1}", type, string.Format("{0}.{1}", xpath.GetAttribute("Schema", type), xpath.GetAttribute("Name", type)));
}
Console.Read();
}
}
}
mysql数据依赖关系_发现数据库对象的依赖关系相关推荐
- 数据库中表的依赖关系
数据库中表的依赖关系 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术:Visual Studio 作者:李继金 撰写时间:2019年6月 ...
- MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器
第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...
- MySQL优化(三):优化数据库对象
二.优化数据库对象 1.优化表的数据类型 应用设计的时候需要考虑字段的长度留有一定的冗余,但不推荐很多字段都留有大量的冗余,这样既浪费磁盘空间,也在应用操作时浪费物理内存. 在MySQL中,可以使用函 ...
- rds mysql 是什么_云数据库RDS是什么
关系型数据库(RDS)是一种稳定可靠.可弹性伸缩的在线数据库服务.具有多重安全防护措施和完善的性能监控体系,并提供专业的数据库备份.恢复及优化方案,使您能专注于应用开发和业务发展. 关系型数据库(Re ...
- 违反mysql三范式_违反数据库第三范式引发的一个问题
数据库第三范式的定义,是这样的: A table is in a third normal form when the following conditions are met - It is in ...
- java类与对象的关系_类与对象的关系是什么
类与对象的关系是:类和对象之间是抽象与具体的关系.类是一个模板,是对一类事物的抽象描述:对象用于表示现实中该事物的个体.类是在对象之上的抽象,对象则是类的具体化,是类的实例. 类与对象有什么关系? 类 ...
- java中友元类_友元类成员的依赖关系|循环依赖
定义一个CBottle类,另一个类CCarton的某个成员对CBottle进行操作,因此在CBottle类中赋予CCarton成员的友元权利.我们很容易写出如下代码: //CBottle类的头文件 b ...
- 无法定位软件包_使用Degraph管理软件包依赖关系
无法定位软件包 软件开发领域的很大一部分是使系统的复杂性尽可能地低. 但是复杂性到底是什么? 尽管确切的语义有很大不同,但具体取决于您询问的人,但大多数人可能都认为这与系统中部件的数量及其交互有很大关 ...
- 简述机器指令与微指令之间的关系_技术动态 | 跨句多元关系抽取
第一部分 概述 关系抽取简介 关系抽取是从自由文本中获取实体间所具有的语义关系.这种语义关系常以三元组 <E1,R,E2> 的形式表达,其中,E1 和E2 表示实体,R 表示实体间所具有的 ...
最新文章
- 「每天一道面试题」下面的代码有问题吗?为什么?
- char varchar nvarchar区别
- [BUUCTF]pwn - wustctf2020_easyfast (Use After Free)
- 轻量级锁的加锁和解锁逻辑
- VS2010 + OpenCV 2.4.1 环境配置
- 常量池在堆还是方法区_第九章_方法区
- linux tar order
- cnpm不是内部或外部命令 cnpm: command not found 解决方案 cnpm
- CLR via C# 读书笔记 5-5 预留大内存
- 一张图看懂华为2019年年报
- 电脑访问不了虚拟机ftp服务器,解决win环境下访问本机虚拟机中centos7 ftp服务器的问题...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
- Atitit 图像处理 opencv使用蒙版mask抠图 切割 attilax总结
- 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)
- 博客园:CSS HTML
- 影响因子,计算机科学,影响因子最高计算机科学期刊(前50种).doc
- Oracle分区表索引
- python清除变量方法
- torch-fidelity 简便计算FID,ISC,KID,PPL
- nginx 极简教程