[转载]今日遇到了困难,顺便看了下SMO – Halower – 博客园.
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,下面的代码可以借鉴一下:
使用 SQLDMO(SQL Distributed Management Objects,SQL分布式管 理对象)。 添加引用->COM里面 //得到所有本地网络中可使用的SQL服务器列表。 SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass(); SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers(); for(int i=0;i<sqlServers.Count;i++) { object srv = sqlServers.Item(i + 1); if(srv != null) { this.cboServers.Items.Add(srv); } } if(this.cboServers.Items.Count > 0) this.cboServers.SelectedIndex = 0; else this.cboServers.Text = ""; //得到指定SQL服务器所有数据库的列表 SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass(); SQLDMO.SQLServer srv = new SQLDMO.SQLServerClass(); srv.Connect(this.cboServers.SelectedItem.ToString(),this.txtUser.Text,this.txtPassword.Text); foreach(SQLDMO.Database db in srv.Databases) { if(db.Name!=null) this.cboDatabase.Items.Add(db.Name); }
//下面是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 代码。