分享
 
 
 

了解SQL2005中的SMO对象使用(-)

王朝mssql·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

1、简介:

在这系列文章中,我将示范如何使用SMO(SQL Management Objects)来实现多种通用的数据库管理任务,比如:备份、恢复、索引处理、完整性检查等

在此文中我们将集中如何编译一个SMO应用程序和如何使用SMO连接到SQL SERVER并获得一些服务器信息,示例代码将分别使用VB.NET、C#和VBSCRIPT。如果你没有使用Visual Studio 2005,我将介绍如何用命令行进行编译操作

2、编译一个SMO应用程序:

要使用SMO对象在.NET应用程序,我们必须添加SMO assemblies应用程序中,在Visual Studio 2005这是非常容易的,通过选择Project>Add Reference 菜单项,然后选择下面assemblies即可

Microsoft.SqlServer.ConnectionInfo

Microsoft.SqlServer.Smo

Microsoft.SqlServer.SmoEnum

Microsoft.SqlServer.SqlEnum

当然,如果你想COOL一点,你可以用命令行来编译,如:

[Visual Basic]

vbc /t:exe c:\SMOtest.vb /r:

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SmoEnum.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll"

[C#]

csc /t:exe /out:c:\SMOTest.exe c:\SMOtest.vb /r:

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SmoEnum.dll",

"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll"

3、获得连接

获得到SQLSERVER的连接是非常容易的,对于缺省的实例并采用WIN授权验证的连接,我们只需简单的创建一个SMO服务器对象,如下代码

[Visual Basic]

Imports Microsoft.SqlServer.Management.Smo

Module SMOTest

Sub Main()

Dim svr As Server = New Server()

Console.Writeline(svr.Name & " " & svr.Information.VersionString)

End Sub

End Module

[C#]

using System;

using Microsoft.SqlServer.Management.Smo;

namespace SMOTest

{

class Program

{

static void Main()

{

Server svr = new Server();

Console.WriteLine(svr.Name + " " + svr.Information.VersionString);

}

}

}

[VBScript]

Set svr = CreateObject("SQLSMO.Server")

WScript.Echo svr.Name & " " & svr.Information.VersionString

Set svr = Nothing

当然,如果你的服务器不是缺省的,比如是用 服务器名/实例名组成,可以使用下面语句:

Dim svr As Server = New Server("(local)")

Server svr = new Server(@"(local)\INSTANCE01")

如果你想更复杂一点,也不想用WIN授权验证,可以参考下面代码

[Visual Basic]

Imports Microsoft.SqlServer.Management.Smo

Imports Microsoft.SqlServer.Management.Common

Module SMOTest

Sub Main()

Dim svr As Server = New Server()

svr.ConnectionContext.LoginSecure = false

svr.ConnectionContext.Login = "username"

svr.ConnectionContext.Password = "password"

Console.Writeline(svr.Name & " " & svr.Information.VersionString)

End Sub

End Module

[C#]

using System;

using Microsoft.SqlServer.Management.Smo;

using Microsoft.SqlServer.Management.Common;

namespace SMOTest

{

class Program

{

static void Main()

{

ServerConnection conn = new ServerConnection();

conn.LoginSecure = false;

conn.Login = "username";

conn.Password = "password";

Server svr = new Server(conn);

Console.WriteLine(svr.Name + " " + svr.Information.VersionString);

}

}

}

[VBScript]

Set svr = CreateObject("SQLSMO.Server")

svr.ConnectionContext.LoginSecure = False

svr.ConnectionContext.Login = "username"

svr.ConnectionContext.Password = "password"

WScript.Echo svr.Name & " " & svr.Information.VersionString

Set svr = Nothing

缺省SMO对象行为是使用连接池的,连接将自动建立和按要求被释放。 如果你不想这样,你可以设置 AutoDisconnectMode 属性改变它的行为,如果设置当然属性值为 NoAutoDisconnect,则连接要求显示的建立和显示的关闭,且这个连接是不能被池应用的,通过设置 NonPooledConnection 属性值为TRUE时,我们是明确指出当前连接不能被POOL,你可以通过使用 Profiler 来观察SMO应用程序的这种行为

如下:

缺省行为-缓冲连接

Dim svr As Server = New Server()

Console.Writeline(svr.Name & " " & svr.Information.VersionString)

Profiler观察器将会显示下面信息:

非缺省行为-非缓冲连接

Dim svr As Server = New Server()

svr.ConnectionContext.NonPooledConnection = True

svr.ConnectionContext.Connect()

Console.Writeline(svr.Name & " " & svr.Information.VersionString)

svr.ConnectionContext.Disconnect()

Profiler观察器将会显示下面信息:

好了,此文到此为止,下文将会更加深入的了解SMO对象,并应用其做一些简单的备份、恢复等操作

该文来自英文文章- http://www.sqldbatips.com/showarticle.asp?ID=37

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有