SQL Server:为啥要使用 SMO?

Posted

技术标签:

【中文标题】SQL Server:为啥要使用 SMO?【英文标题】:SQL Server: Why do use SMO?SQL Server:为什么要使用 SMO? 【发布时间】:2011-05-15 21:01:35 【问题描述】:

我已经使用 SQL Server 工作了几年。我听说过 SMO,但我对此一无所知。使用它有什么好处?我应该在我的 SQL Server 项目(主要是数据仓库开发)中学习并开始使用 SMO 吗?为什么?

【问题讨论】:

【参考方案1】:

来自微软:

Overview (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 增加 性能、控制和易用性。 包括大多数 SQL-DMO 功能 在 SMO 中,有各种新的 支持新功能的类 SQL 服务器。对象模型是 直观并使用 SQL-DMO 术语,在可能的情况下, 帮助转移您的技能。

您可以在此处下载 SMO:

Microsoft® SQL Server® 2008 R2 Feature Pack

对于开始编程:

Creating SMO Programs

【讨论】:

谢谢,我需要什么才能开始使用 SMO?我需要完整的 Visual Studio 2008 还是 SQL Server 2008 EE 中包含 SMO?【参考方案2】:

这取决于你想要做什么。 SMO 是 SQL Server 管理对象。它是一组用于以编程方式管理 SQL Server 的库。例如,如果您正在尝试构建 SQL Maangement Studio 的克隆,那么您可能想要研究 SMO。或者,如果您尝试以编程方式操作数据库的结构,那么这就是查看的地方。

否则,我不会打扰。

【讨论】:

还有比这更多的用例,例如,以编程方式为您的数据库对象提取 DDL。【参考方案3】:

我已经使用 SMO 自动编写出目标代码和用户权限并添加到版本控制中。

通过这样做,我可以在某个时间点为我的审计团队或我自己的研究或克隆服务器保存权限或对象 DDL。

我也使用它,因此我可以快速比较特定日期的目标代码,而无需快照/备份。

最近我在一个灾难恢复项目中使用 SMO 编写了所有服务器权限和系统数据库对象权限的脚本,并在替换服务器上运行脚本。

【讨论】:

我也这样做。在此之前,SqlPubWiz 是唯一的选择。【参考方案4】:

我最近创建了一个带有 SQL 数据库后端和 SMO 库的 POS/工单管理应用程序。 SMO 为我的应用程序提供了很大的灵活性,可以根据工单记录、用户记录甚至我自己的一组用户角色来控制数据库。帮助我在管理特定数据库时区分 SQL 用户。所以,我的看法是,这完全取决于您使用 SQL 的范围以及您可能需要多少自动化和控制 SQL 数据库的某些方面。

【讨论】:

以上是关于SQL Server:为啥要使用 SMO?的主要内容,如果未能解决你的问题,请参考以下文章

为啥sqlserver 数据库还原不成功?

sql 使用SMO重新启动Sql Server代理服务

如何使用 SMO 和 SQL Server 生成脚本以删除列?

如何在 C# 中使用 SMO 列出可用的 SQL Server 实例?

SQL Server 管理对象 (SMO) 的默认约束不一致

使用 SMO.Agent 检索 SQL 作业执行状态 - 安全问题