发现数据库对象的依赖关系
2009-05-24 16:50
567 查看
SQL Server Management Studio中有一个很有意思的工具,可以查看某个对象的依赖和被依赖关系。如下图所示
假设,我们自己的程序也要实现这样的功能,那么该怎么做呢?
1. 首先,创建一个项目,添加以下三个引用
2. 用如下代码测试
using System;
using System.Collections.Generic;
using System.Text; using Microsoft.SqlServer.Management.Smo; namespace DiscovDepedency
{
class Program
{
/// <summary>
/// 这个程序演示了如何发现数据库对象的依赖关系
/// 作者:陈希章
/// </summary>
/// <param name="args"></param>
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(); }
}
}
假设,我们自己的程序也要实现这样的功能,那么该怎么做呢?
1. 首先,创建一个项目,添加以下三个引用
2. 用如下代码测试
using System;
using System.Collections.Generic;
using System.Text; using Microsoft.SqlServer.Management.Smo; namespace DiscovDepedency
{
class Program
{
/// <summary>
/// 这个程序演示了如何发现数据库对象的依赖关系
/// 作者:陈希章
/// </summary>
/// <param name="args"></param>
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(); }
}
}
相关文章推荐
- 发现数据库对象的依赖关系
- 获得当前数据库中对象的依赖关系的算法
- 获得当前数据库对象依赖关系的实用算法
- 查询数据库对象依赖关系
- 查找当前用户的所有数据库对象的依赖关系
- 13. 查看数据库对象间的依赖关系
- 更新数据库对象依赖关系
- 细粒度依赖(一)通过数据字典找到数据库对象之间的引用关系
- PostgreSQL每日一贴-数据库对象依赖关系
- 查看数据库对象间的依赖关系
- 13. 查看数据库对象间的依赖关系
- 此数据库没有有效所有者,因此无法安装数据库关系图支持对象,解决方案
- Oracle查看对象依赖关系
- 翻译mos文章 磁盘组的错误依赖关系导致数据库启动失败
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- mybatis对象之间映射关系以及数据库表建立的时候外键的添加
- Hibernate创建对象-关系映射文件和数据库
- 微软企业库Enterprise Library学习笔记二各功能之间的依赖关系以及对象创建
- 数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法