2011年8月23日 星期二

在SQL Server 2008中SQL-DMO被SMO代替

最近想研究通过编程控制操作SQL Server。下载了一个工具叫Sql Buddy。但在使用的时候发生异常,经查,是因为我的机器上安装的SQL Server Express 2008并没有提供SQL-DMO组件库。Google了一番,找到原因:
MSDN上搜到SQL-DMO 参考


后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 

SQL Server 分布式管理对象 (SQL-DMO) 是封装了 Microsoft SQL Server 数据库管理和复制管理的对象所组成的集合。SQL-DMO 允许您对管理 SQL Server 的应用程序进行计划。SQL-DMO 参考包含有关对象、集合、属性、方法、事件、常量和示例程序的详细信息。

SQL-DMO 已被 SQL Server 管理对象 (SMO) 取代。


于是又查阅了下SMO的概述
SQL Server 管理对象 (SMO) 是针对 Microsoft SQL Server 的编程管理设计的对象。可以使用 SMO 生成自定义 SQL Server 管理应用程序。尽管 SQL Server Management Studio 是用于管理 SQL Server 的使用广泛的强大应用程序,但有时 SMO 应用程序可能对您更为适用。
例如,可能需要简化控制 SQL Server 管理任务的用户应用程序,以满足新用户的需要并且降低培训成本。您可能需要创建自定义 SQL Server 数据库,或创建用于创建和监控索引效率的应用程序。还可以使用 SMO 应用程序将第三方硬件或软件无缝纳入数据库管理应用程序。
SMO 对象模型扩展并取代了分布式管理对象 (SQL-DMO) 对象模型。与 SQL-DMO 相比,SMO 提高了性能、加强了控制,并且更易于使用。SMO 中包括大部分 SQL-DMO 功能,并且还有很多新类用于支持 SQL Server 中的新增功能。该对象模型直观明了,并且尽量使用 SQL-DMO 术语,以帮助您进行技能过渡。
由于 SMO 与 SQL Server 2000、SQL Server 2005 和 SQL Server 2008 兼容,您可以轻松管理多版本环境。
....
SMO 命名空间为 
Microsoft.SqlServer.Management.Smo。SMO 作为 Microsoft .NET Framework 程序集实现。这意味着使用 SMO 对象之前必须先安装 Microsoft .NET Framework 版本 2.0 中的公共语言运行时。SMO 程序集随 SQL Server SDK 选件默认安装到全局程序集缓存 (GAC) 中。这些程序集位于 C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\ 中。有关详细信息,请参阅 Visual Studio .NET Framework 文档。
  SMO 类
SMO 类包括两个类别:实例类和实用工具类。
实例类
实例类表示 SQL Server 对象,如服务器、数据库、表、触发器和存储过程。
 ServerConnection 类用于与 SQL Server 实例建立连接,并且控制发送到它的命令的捕获模式。
SMO 实例对象所构成的层次结构代表了数据库服务器的层次结构。顶部为 SQL Server 实例,其下为数据库,再下面是表、列、触发器等。如果存在一个父级对多个子级的关系(如某个表具有一个或多个列)是符合逻辑的,那么子级将由对象集合来表示。否则子级仅由对象来表示。
实用工具类
实用工具类是为执行特定任务而显式创建的一组对象。根据功能将它们划分为不同的对象层次结构:


    • 传输类。用于向其他数据库传输架构和数据。
    • 备份和还原类。用于备份和还原数据库。
    • 脚本程序类。用于创建脚本文件,以重新生成对象及其依赖关系。



...

SMO 对象模型取代了 SQL-DMO。SMO 支持 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。它支持更多 SQL Server 管理任务并包含 SQL Server 中的许多新功能。SMO 设计用于提高效率和加强控制。

DMO 库是一个 COM 对象模型,而 SMO 作为 .NET Framework 程序集实现。COM 组件是一些库,这些库向应用程序提供可重用的功能并且采用非托管应用程序编程方式。.NET Framework 程序集提供可重用功能,供 .NET Framework 编写托管代码应用程序。

向 .NET Framework 技术过渡的过程中,编写应用程序可采用部分托管代码和部分非托管代码。.NET Framework 支持与 COM 组件建立接口连接,这需要一个主互操作程序集。SQL-DMO 需要运行时包装,以便从基于 .NET Framework 的应用程序进行调用。

看样,学习SQL Server的管理与控制,以后就全面研究SMO这个命名空间了。但是如果你想在SQL Server 2008中使用SQL-DMO,你可以下载Microsoft SQL Server 2008 功能包中的Microsoft SQL Server 2005 向后兼容组件


另注:Sql Buddy这个工具是开源的,用C#代码编写的。我决定使用SMO重写Sql Buddy这个工具以符合潮流。由于我对SQL-DMO和SMO都不熟悉。这可能要花费一段时间。

来源:http://www.cnblogs.com/codeyu/

沒有留言:

張貼留言