在SQL Server2005以前的版本中,SQL分布式管理对象(SQL-DMO)为我们提供了非常有效的方法来通过编程的方式管理SQL Server。SQL-DMO支持基于COM的接口,开发人员可以通过这个接口来发现和操作SQL Server对象。而SQL Server2005在这方面做了更大的改进,它提供了一种新的管理框架,叫做SQL Server管理对象(简称为SMO),这套组件具有更强大的管理能力,而且它被建立在.Net Framework2.0之上。当然,我们仍然可以使用SQL-DMO来管理SQL Server2005,但SMO为我们提供了更多的功能,也支持很多SQL Server2005的新特性,它的性能也比SQL-DMO更优化。
微软将SMO定义为“为可编程管理微软SQL Server而设计的对象”。SMO给了开发人员更全面地管理SQL Server的各种元素的能力,如表、列、索引、存储过 程、触发器、Service Broker、快照数据库、备份和恢复、文件和文件组等。本文为了介绍SMO的使用,讨论了SMI的一些主要的特性。本文首先讨论了一些和SMO相关的编 程主题,然后分析了一个SMO的应用程序例子。在这个例子中将演示如何使用SMO来引用 SQL对象和它们的属性,以及如何为它们产生T-SQL脚本。
一、SMO基础
SMO由.NET Framework2.0写成。所以我们必须使用Visual Studio2005或其后继版本中使用SMO。我们可以在Windows2003、Windows XP、Windows2000和Windows NT(SP5及以上版本)。别外,我们可以使用SMO连接SQL Server7、SQL Server2000和Sql Server2005数据库,但SMO并不支持更底版本的数据库,如sql server6.5。虽然SMO可以降级使用,但很明显,如果使用较低级的数据库,它的更多的特性就无法使用了。要使用SMO,我们需要如下的.NET 库:
Microsoft.SqlServer.ConnectionInfo
Microsoft.SqlServer.Smo
Microsoft.SqlServer.SmoEnum
Microsoft.SqlServer.SqlEnum
如果我们 没有在Visual Studio的标准.NET引用列表中看到,我们可以在C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies目录中找到这些库。如果我们没有这些组件,可以使用SQL Server客户端利用SQL Server2005的任何版本来安装它们。
在每个引用SMO对象的代码文件中,我们都要使用imports(VB.NET)来导入以下的命名空间:
Imports Microsoft.SqlServer.Management
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
为了增强可读性,最好同时引用 Microsoft.SqlServer.Management.Smo 和 the Microsoft.SqlServer.Management。这主要是因此这们包含了一些名子相同的类,这些类可能会和定义在Windows Forms应用程序中的其他类产生歧义。在这种情况下,我们可以使用SMO命名空间作为前缀以消除歧义,如Dim objView as Smo.View。源自[http://tech.it168.com/d/2007-10-29/200710281939625.shtml]