Fork me on GitHub

今日遇到了困难,顺便看了下SMO

C# 如何获取本地数据库SQL Server2008的数据库服务器名称和数据库名称?不知道为什么我的Win7就是注册不了sqldmo.dll,经过学习,基本可以自己使用SMO解决这些问题。

我在百度中找到了这个问题的答案,不过不知道为什么我的Win7就是注册不了sqldmo.dll,因此无法引用SQL Distributed Management Objects。

问题关键是我安装的是SQL2008EXPRESS版本没有安装SQL2000的企业版附带不了这个COM组件,也不想安装2000,解决不了问题很纠结。因此我就看了下MSDN,里面说SQLDMO已经被SMO取代了,所以附带的看了下,SMO,太菜只是知道了怎么使用SMO来控制数据库的简单操作。现在晚上,修改下内容,我已经基本了解SMO的用法了,以后共享给和我一样的新手,谢谢大家的帮助,对了要是谁还用SQLMDO.DLL,下面的代码可以借鉴一下:

 

 1 使用 SQLDMO(SQL Distributed Management Objects,SQL分布式管 理对象)。
2 添加引用->COM里面
3 //得到所有本地网络中可使用的SQL服务器列表。
4 SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
5 SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
6 for(int i=0;i<sqlServers.Count;i++)
7 {
8 object srv = sqlServers.Item(i + 1);
9 if(srv != null)
10 {
11 this.cboServers.Items.Add(srv);
12 }
13 }
14 if(this.cboServers.Items.Count > 0)
15 this.cboServers.SelectedIndex = 0;
16 else
17 this.cboServers.Text = "<No available SQL Servers>";
18
19
20 //得到指定SQL服务器所有数据库的列表
21 SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
22 SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass();
23 srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text);
24 foreach(SQLDMO.Database db in srv.Databases)
25 {
26 if(db.Name!=null)
27 this.cboDatabase.Items.Add(db.Name);
28 }



//下面是SMO的项目创建部分,就我不知道,所以记下来,给比我还新的新手看看,不过我也发现这个必须结合.NET3.5以上的版本的LINQ支持

 

在 Visual Studio .NET 中创建 Visual C# SMO 项目

本节介绍了如何生成简单的 SMO 控制台应用程序。

此示例导入命名空间,这样,程序即可以引用 SMO 类型。可以选择导入 Agent 命名空间。当编写使用 SQL Server 代理的程序时使用此命名空间。需要使用 Common 命名空间来建立与 SQL Server 实例的安全连接。使用 SqlClient 命名空间处理 SQL 异常错误。

在 Visual Studio .NET 中创建 Visual C# SMO 项目

启动 Visual Studio 2008(或 Visual Studio 2005)。

文件菜单上,单击新建项目。此时将显示新建项目对话框。

项目类型对话框中,选择“Visual C#”,然后选择“Windows”。在“Visual Studio 已安装的模板窗格中,选择“Windows 应用程序

(可选)在名称字段中,键入新应用程序的名称。

选择 Visual C# 应用程序类型。在下面的示例中,请选择控制台应用程序

项目菜单上,选择添加引用。此时将显示添加引用对话框。

单击浏览,在 C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\ 文件夹中找到 SMO 程序集,然后选择下列文件。这些文件是构建一个 SMO 应用程序至少需要的文件:

Microsoft.SqlServer.ConnectionInfo.dll

Microsoft.SqlServer.Smo.dll

Microsoft.SqlServer.Management.Sdk.Sfc.dll

Microsoft.SqlServer.SqlEnum.dll

注意

使用 Ctrl 键可选择多个文件。

添加需要的任何其他 SMO 程序集。例如,如果您要专门对 Service Broker 进行编程,则可以添加以下程序集:

Microsoft.SqlServer.ServiceBrokerEnum.dll

单击打开

视图菜单中,单击代码。或者选择“Program1.cs [设计窗口,然后双击 Windows 窗体以显示代码窗口。

在代码的命名空间语句前,键入以下 using 语句,以限定 SMO 命名空间中的类型:

using Microsoft.SqlServer.Management.Smo;

using Microsoft.SqlServer.Management.Common;

SMO 在 Microsoft.SqlServer.Management.Smo 下具有各种命名空间,如 Microsoft.SqlServer.Management.Smo.Agent。请根据需要添加这些命名空间。

您可以立即添加 SMO 代码。

 

 

 

posted @ 2012-03-28 14:26  Halower  阅读(1454)  评论(0编辑  收藏  举报