三、从SMO中获得对象列表
在许多nt况,SMO提供了两种方法从SMO中获得对象列表。如为了得到数据库中表对象的列表,我们可以采取两种方式:
1. 通过一个属性得到对象组,并接受一个对象集合。
2. 调用EnumObjects方法,这个方法返回一个包含相应信息的DataTable。
一般情况下,通过调用调用集合属性可以获得更多有用的结果,因为我们可以单独获得某个对象更多的信息。如我们得到一个表对象的集合,我们可以在集合中查询每个表对象的其他属性,如列信息,索引或触发器等。
四、SMO类的层次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类的最高层是连接方法。在创建一个连接后,我们将寻找方法来管理服务层属性,如获得数据库列表和登录用户列表。以及中断SQL进程等。每一个Server类包含一个数据库类的集合,而每一个数据库类包含了表、存储过程、视图等数据库元素的集合。在大多数情况下,SMO类的层次有些类似我们经常使用的SQL企业管理器的树结构。