SqlServer Management Objects简介

Smo是SqlServer Management Objects的简称,由SQL2005提供的管理对象,sql-dmo的逻辑进化版本,主要功能由C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies下面的Microsoft.SqlServer.Smo.dll文件中的相关 对象来实现,可以直接由vs2005开发的程序来引用。

msdn参考文档:

http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.aspx。

文档中他列举了7条大的功能,其实毫不夸张地说,只要SQL Server Management Studio能实现的东西,用smo都能实现,因为SQL Server Management Studio就是用smo开发的。如果你有足够的实力,完全可以开发一个可以藐视SQL Server Management Studio的工具,比如加入智能感知的功能。

具体详细应用这里就不展开了,对象太多...只举一个例子,很多人问的如何生成sql对象的脚本:

--先搞一个测试环境
use tempdb
create table test(id int identity(1,1))

//添加引用
//Microsoft.SqlServer.ConnectionInfo.dll
//Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.Management.Common.ServerConnection conn = new Microsoft.SqlServer.Management.Common.ServerConnection(
new System.Data.SqlClient.SqlConnection("server=localhost;uid=sa;pwd=***;database=master"));//一个数据库连接字符串
Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(conn);
Microsoft.SqlServer.Management.Smo.Database db = server.Databases["tempdb"];
Microsoft.SqlServer.Management.Smo.Table tb= db.Tables["test"];
System.Collections.Specialized.StringCollection sc= tb.Script();
foreach (String s in sc)
{
Console.WriteLine(s);
}

输出:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
CREATE TABLE [dbo].[test](
[id] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]

---

时间: 2024-09-19 11:43:31

SqlServer Management Objects简介的相关文章

Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)

使用Microsoft SQL SERVER 2014 Management Studio访问Azure SQL Database时,查看存储过程时遇到下面错误信息: TITLE: Microsoft SQL Server Management Studio   ------------------------------   Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)  

第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器

原文:第十九章--使用资源调控器管理资源(1)--使用SQLServer Management Studio 配置资源调控器 本系列包含: 1. 使用SQLServer Management Studio 配置资源调控器 2. 使用T-SQL配置资源调控器 3. 监控资源调控器   前言:       在前面的章节,提到过可以通过多种配置数据库服务器的方式来提高性能.如索引.统计信息.hints.物理设计和服务器配置等.       当你完成上面那些配置后,还依旧有少量存储过程.查询运行得很慢时

SQL Server 2008 筛选器报错Microsoft.SqlServer.Management.Sdk.Sfc

在Microsoft SQL Server 数据库中有时候经常需要筛选表,因为数据中表比较多时,不仅从一堆表里面找一个表比较麻烦,而且客户端从服务器加载这些信息需要一些时间.前两天安装了SQL Server 2008,结果在筛选表时,报如下错误:    点击确定后,然后"表(已筛选)",弹出如下错误提示.   这个是因为没有打上SQL Server 2008 Service Pack 1这个补丁.打上这个补丁后,就不会出现上面这种错了.SP1补丁官方地址http://www.micro

VS2012连接sql2008的问题-Could not load file or assembly 'Microsoft.SqlServer.Manageme

问题描述 在用VS2012连接SQL2008生成实体模型的时候出现Couldnotloadfileorassembly'Microsoft.SqlServer.Management.Sdk.Sfc,Version=11.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91'oroneofitsdependencies.Thesystemcannotfindthefilespecified.但是我用VS2010连接SQL2008就没问题. 解决

第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(1)

原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(1) 忘了说明:本系列文章出自<Microsoft SQL Server 2012 Performance Tuning Cookbook>,将会陆续推出译文,但是由于工作需要,没有按顺序贴出来. 本系列文章包含三部分: 1.  使用系统统计函数(system statistical functions)来监控系统健康程度. 2. 使用系统存储过程来监控SQLServer进程和会话. 3.  使用DB

配置-SQLSERVER 数据库邮件发不出去

问题描述 SQLSERVER 数据库邮件发不出去 select * from msdb.dbo.sysmail_event_log 从log表中发现下面的这个错误,经过测试邮件服务器配置是没问题的,本地数据库可以发,这个发邮件服务已经用了一年多,突然这2天就出现了.难道我要重新安装SQL吗?现在也没那个时间装啊!我用的是SQL2005 服务器是window2008 R2,求有经验的人帮忙解答! 1) Exception Information =================== Except

SQLServer 2012 登陆异常问题

背景 RDS FOR SQLServer 2012 已经上线一段时间了,从反馈来看大家遇到了很多权限相关的问题,所以建议把RDS FOR SQLServer 2012权限提升这篇文章作为基础知识先能够理解:再之后针对大家经常遇到的CASE我们会把解决方法分享出来,本篇文章是其中之一. 问题 用户应用链接数据库失败 持续报错,业务因此停滞,使用SSMS链接也出错 Detail =================================== Cannot connect to * =====

恢复SQLServer实例连接

原文:恢复SQLServer实例连接 译自: http://www.mssqltips.com/sqlservertip/2682/recover-access-to-a-sql-server-instance/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012829   问题: 开启SQLServer2008之后,本地管理员组不再需要手动添加,因为在安装的时候已经默

SQLSERVER全文目录全文索引的使用方法和区别讲解_MsSql

先介绍一下SQLSERVER中的存储类对象,哈哈,先介绍一下概念嘛,让新手老手都有一个认知SQLSERVER Management Studio将[全文目录].[分区函数]以及[分区方案]节点纳入其[对象资源管理器]的[存储]节点之中,如下图所示: 全文目录 数据库[存储]|[全文目录]节点是用于保存和管理[全文索引]的节点.全文目录通常是由同一数据库中的零个或多个数据表的全文索引构成的.需要注意的是,只能为每个数据表创建一个全文索引.因此,一旦在某个数据表上创建了全文索引,那么该数据表将只能隶