转:数据库管理对象(SMO)-为什么没有System.Data.DBManagement命名空间?
2009-03-31 22:37
309 查看
最近要为我们的程序增加数据导出的功能,需用连接数据库,再列出数据库中的表。功能并不复杂,实现也没有难度。而且VS本身就自带了这个东东。如图:
Code
Server myServer=new Server();
myServer.Name="localhost";
myServer.TrustConnection=true;
Database db=new Database();
Database.Server=myServer;
TableCollection tables=Database.GetTables();
以上的示例只是简单的意思一下。如果要覆盖所有数据库管理工具的功能,应该是一个比较庞大的类库了。我不知道哪里是不是已经有这样的类库,如果没有,只有自己开发了...
帖子发表以后,根据很多朋友的指点(多谢下面的各位同学,具体就不点名了)。一共有三个答案。
1.Sql Server的SDK中的SQL Server Management Objects (SMO)应该就是本案的标准答案。美中不足的是,微软只提供Sql Server的数据库管理对象的类库,不支持其他数据库。
这是MSDN上SMO(SQL Server2005)的地址http://msdn.microsoft.com/zh-cn/library/ms162169(SQL.90).aspx
另外一篇介绍SMO的文章http://hi.baidu.com/qualylee/blog/item/0e4e0e33a64127fb1a4cff53.html
2.MyGeneration的MyMeta.dll中。功能肯定不如SMO强,但是提供了对数据库管理的比较丰富的类,并且支持十几种数据库。尤其可喜的是,MyGeneration现在是开源的。http://sourceforge.net/projects/mygeneration/
不过毕竟MyMeta.dll 的目的并不是用于管理数据库,因此可能对于管理数据库方面的功能少了点。
3.SQL Server Web Data Administrator 的SqlAdmin.dll。SQLWebAdm 是在CodeComplex的一个开源项目,也是微软团队开发的,因此也只支持Sql Server。该项目主要是SQL Server管理器的Web版本(不过好像很久没有更新了最近更新时间2007年11月),但是它并没有引用SMO的类库而是自己开发了SqlAdmin.dll,也许是为了独立吧。SqlAdmin.dll中的类跟MyMeta.dll中MyMeta.Sql命名空间的类有些类似,可谓英雄所见略同吧。
http://www.codeplex.com/SqlWebAdmin
补充:实用ADO.NET的DbConnection 类的 GetSchema 方法也可以获取数据库的架构信息。
http://msdn.microsoft.com/zh-cn/library/kcax58fh(VS.80).aspx
我们的项目需要自动生成导入数据的脚本,假如目标数据库中已经存在数据,对于自增列值冲突的问题要有特殊的解决,等我研究好了我会在下篇随笔中公布源代码和详细描述,假如哪位朋友已经有现成的解决方案,也希望不吝赐教。
Code
Server myServer=new Server();
myServer.Name="localhost";
myServer.TrustConnection=true;
Database db=new Database();
Database.Server=myServer;
TableCollection tables=Database.GetTables();
以上的示例只是简单的意思一下。如果要覆盖所有数据库管理工具的功能,应该是一个比较庞大的类库了。我不知道哪里是不是已经有这样的类库,如果没有,只有自己开发了...
帖子发表以后,根据很多朋友的指点(多谢下面的各位同学,具体就不点名了)。一共有三个答案。
1.Sql Server的SDK中的SQL Server Management Objects (SMO)应该就是本案的标准答案。美中不足的是,微软只提供Sql Server的数据库管理对象的类库,不支持其他数据库。
这是MSDN上SMO(SQL Server2005)的地址http://msdn.microsoft.com/zh-cn/library/ms162169(SQL.90).aspx
另外一篇介绍SMO的文章http://hi.baidu.com/qualylee/blog/item/0e4e0e33a64127fb1a4cff53.html
2.MyGeneration的MyMeta.dll中。功能肯定不如SMO强,但是提供了对数据库管理的比较丰富的类,并且支持十几种数据库。尤其可喜的是,MyGeneration现在是开源的。http://sourceforge.net/projects/mygeneration/
不过毕竟MyMeta.dll 的目的并不是用于管理数据库,因此可能对于管理数据库方面的功能少了点。
3.SQL Server Web Data Administrator 的SqlAdmin.dll。SQLWebAdm 是在CodeComplex的一个开源项目,也是微软团队开发的,因此也只支持Sql Server。该项目主要是SQL Server管理器的Web版本(不过好像很久没有更新了最近更新时间2007年11月),但是它并没有引用SMO的类库而是自己开发了SqlAdmin.dll,也许是为了独立吧。SqlAdmin.dll中的类跟MyMeta.dll中MyMeta.Sql命名空间的类有些类似,可谓英雄所见略同吧。
http://www.codeplex.com/SqlWebAdmin
补充:实用ADO.NET的DbConnection 类的 GetSchema 方法也可以获取数据库的架构信息。
http://msdn.microsoft.com/zh-cn/library/kcax58fh(VS.80).aspx
我们的项目需要自动生成导入数据的脚本,假如目标数据库中已经存在数据,对于自增列值冲突的问题要有特殊的解决,等我研究好了我会在下篇随笔中公布源代码和详细描述,假如哪位朋友已经有现成的解决方案,也希望不吝赐教。
相关文章推荐
- 专卖店总部:财务管理——利润报表查询,没有数据。但分析中心的报表都有数据。为什么?
- "此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法
- hibernate 使用注解 查询和添加对象到数据库没有反应
- android.database.sqlite.databaseobjectnotclosedexception:应用程序没有关闭的光标或数据库对象
- VS2005 通过SMO(SQL Management Objects) 管理 数据库的作业 警报 备份 等任务
- sql2000备份的数据库还原到sql2005后,选择“数据库关系图”提示:此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法
- 异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
- 在VS05里直接建数据库为什么有时对表增、删、改会没有作用?
- 数据库对象管理 (表)
- Oracle学习交流(2) -----管理数据库对象
- KBase数据库,出现“没有导入任何对象,该对象可能已经存在”。
- Greenplum中定义数据库对象之创建与管理序列、索引以及视图
- 超详细Oracle 12c数据库对象管理操作
- 解决异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。 (SQL2000转到2005)
- java反射机制set方法 连接数据库(还有待修改,没有循环ResultSet对象)
- Greenplum中定义数据库对象之创建与管理数据库
- 异常:此数据库没有有效所有者,因此无法安装数据库关系图支持对象。
- 为什么没有字节流转字符流的IO对象?
- SQL笔记(3)_第三章 管理数据库对象
- sqlserver2005"此数据库没有有效所有者,因此无法安装数据库关系图支持对象"的解决方法