△1、简介: 在这系列文章中,我将示范如何...... 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 . |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-29 19:20 , Processed in 0.337186 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.