技术开发 频道

SQL Server2005之SMO实战



三、从SMO中获得对象列表

    在许多nt况,SMO提供了两种方法从SMO中获得对象列表。如为了得到数据库中表对象的列表,我们可以采取两种方式:

1. 通过一个属性得到对象组,并接受一个对象集合。

2. 调用EnumObjects方法,这个方法返回一个包含相应信息的DataTable。

    一般情况下,通过调用调用集合属性可以获得更多有用的结果,因为我们可以单独获得某个对象更多的信息。如我们得到一个表对象的集合,我们可以在集合中查询每个表对象的其他属性,如列信息,索引或触发器等。
 
    相对比,使用EnumObjects虽然不能获得那么多的信息,但是它使用起来更方便。如果我们想使用网络或其他的数据感知控件时,可以考虑使用EnumObjects。下面的代码演示了使用上述两种方法从一个数据库中得到相应的表对象的步骤:

Imports Microsoft.SqlServer.Management Imports Microsoft.SqlServer.Management.Smo Imports Microsoft.SqlServer.Management.Common Dim objServer as Server Dim objDatabase As Database objServer = New Server() objDatabase = objServer.Databases("SMOSample") '**************************************************** ' Use Tables property to get list of tables '**************************************************** Debug.WriteLine("Tables in Database " & objDatabase.Name) For Each objTable As Table in objDatabase.Tables Debug.WriteLine("Table: " & strServer) Next '**************************************************** ' Use EnumObjects method to get list of tables '**************************************************** Debug.WriteLine("Tables in Database " & objDatabase.Name) For Each objRow As DataRow In _ m_objDatabase.EnumObjects(DatabaseObjectTypes.Table, _ Smo.SortOrder.Name).Rows Debug.WriteLine("Table " & CStr(objRow("Name"))) Next
四、SMO类的层次

   
大多数SMO对象都可以从名子判断它用来做什么。在SMO类的最高层是连接方法。在创建一个连接后,我们将寻找方法来管理服务层属性,如获得数据库列表和登录用户列表。以及中断SQL进程等。每一个Server类包含一个数据库类的集合,而每一个数据库类包含了表、存储过程、视图等数据库元素的集合。在大多数情况下,SMO类的层次有些类似我们经常使用的SQL企业管理器的树结构。
0
相关文章