使用SQLDMO从SQL Server中获取信息

server

提要:
ms sql server提供了一个非常方便的COM组件“SQLDMO”来帮助我们获取和管理SQL Server。在这里提供一些想法和实现
系统要求:
windows2000server
vs.net rc3
sql server 2000
正文:
1.在.NET中使用sqldmo.dll
path :>tlbimp sqldmo.dll /out : rc3sqldmo.dll
创建一个新的C#项目(winform, library....),添加引用,选择Browse,找到rc3sqldmo.dll,加入。
2.查看rc3sqldmo.dll的结构
打开object view,选择rc3sqldmo,你能浏览所有的属性、方法和事件的定义。
3.使用rc3sqldmo
    获得连接
            rc3sqldmo.sqlserver2 mysqlsvr = new rc3sqldmo.sqlserver2class();

mysqlsvr .connect("sqlservername","uid","pws");

    获得数据库信息

rc3sqldmo.databases mydbs=mysqlsvr.databases;
rc3sqldmo.database2 mydb =new rc3sqldmo.database2class();
mydb=mydbs.item("dbname","owner"); 或mydb=mysqlsvr.databases.item("dbname","owner");

   获得表和字段的信息

rc3sqldmo.Tables mytbls= mysqlsvr.databases.item("dbname","owner").tables;
rc3sqldmo.table2 mytbl = new rc3sqldmo.table2class();
mytbl = mytbls.item("tablename","owner");或
mytbl = mysqlsvr.databases.item("dbname","owner").tables.item("tablename","owner");
string[3] mylist = new string[3];
rc3sqldmo.column2 myfield = new rc3sqldmo.column2class();
foreach(object o in mytbl.columns)
{   
        myfield = (rc3sqldmo.column2) o;
        mylist[0]=myfield.name;
       mylist[1] = myfield.datatype;
      mylist[2] =myfield.length.tostring();
}

获得存储过程的信息:

rc3sqldmo.storedprecudure2 mysp = new rc3sqldmo.storedprecudure2class();
mysp =mysqlsvr.batabase.itrm("dbname",owner).storedprecudures.item[B("spname",owner)]

用途的讨论::

动态管理sql server
动态获得table,storedprecudure的结构信息
还能增加,修改所有sql server object的内容。

   

时间: 2024-11-08 19:15:51

使用SQLDMO从SQL Server中获取信息的相关文章

SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)

原文:SQL Server 中统计信息直方图中对于没有覆盖到谓词预估以及预估策略的变化(SQL2012-->SQL2014-->SQL2016)   本文出处:http://www.cnblogs.com/wy123/p/6770258.html    统计信息写过几篇了相关的文章了,感觉还是不过瘾,关于统计信息的问题,最近又踩坑了,该问题虽然不算很常见,但也比较有意思.相对SQL Server 2012,发现在新的SQL Server版本(2014,2016)中都有一些明显的变化,下文将对此

从SQL Server中获取XML

server|xml private string GetFORXML(string sFile, string sSQL)  {   // Create and open the connection to Northwind   DataSet oDs = new DataSet();   using(SqlConnection oCn = new SqlConnection(ConnectionString))   {    oCn.Open();       // Create the

在SQL Server 中使用SQLDMO

server   曾几何时,伙伴们为数据库的升级伤透了脑筋.往往程序的升级赶不上数据库的升级(版本控制的好,这也许不是什么问题,但对于很大一部分中国公司来说这是无法避免的).而有些n久以前的数据库要使用新程序的时候,数据库的升级简直就是无从下手.所以对比数据库升级的紧要性就逐渐的凸现出来.对于表和字段的升级按道理来说是不难的,通过sysobjects与syscolumns的比较很容易的可以找到不同之处,然后增加没有的对象即可.而对于视图和存储过程等非表对象的更新就有些为难了(当然视图和存储过程如

InfoPath开发实战(3):获取SQL Server中的数据

本节的内容: 如何在InfoPath中使用数据连接来从SQL Server数据库中获取数据 如何通过代码来修改数据连接中的SQL查询 在开始设计InfoPath表单之前,先准备一个数据库,InfoPath支持两种数据库连接: Microsoft Office Access数据库(.mdb文件或.accdb文件) Microsoft SQL Server数据库 需要注意的是,InfoPath虽然支持SQL Server Express数据库,但却不支持以文件的形式连接SQL Server Expr

SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句

原文:SQL SERVER 2005 获取表的所有索引信息以及删除和新建语句 BEGIN WITH tx AS ( SELECT a.object_id ,b.name AS schema_name ,a.name AS table_name ,c.name as ix_name ,c.is_unique AS ix_unique ,c.type_desc AS ix_type_desc ,d.index_column_id ,d.is_included_column ,e.name AS co

将SQL Server中的表变成txt文件

方法一:用BCP命令 bcp 实用工具 bcp 实用工具在 Microsoft? SQL Server? 2000 实例和数据文件之间以用户指定的格式复数据. 语法 bcp {[[database_name.][owner].]{table_name | view_name} | "query"} {in | out | queryout | format} data_file [-m max_errors] [-f format_file] [-e err_file] [-F fir

SQL Server 中WITH (NOLOCK)浅析

原文:SQL Server 中WITH (NOLOCK)浅析 概念介绍    开发人员喜欢在SQL脚本中使用WITH(NOLOCK), WITH(NOLOCK)其实是表提示(table_hint)中的一种.它等同于 READUNCOMMITTED . 具体的功能作用如下所示(摘自MSDN):    1: 指定允许脏读.不发布共享锁来阻止其他事务修改当前事务读取的数据,其他事务设置的排他锁不会阻碍当前事务读取锁定数据.允许脏读可能产生较多的并发操作,但其代价是读取以后会被其他事务回滚的数据修改.这

SQL Server 中 RAISERROR 的用法详细介绍_mssql2005

 SQL Server 中 RAISERROR 的用法 raiserror 的作用: raiserror 是用于抛出一个错误.[ 以下资料来源于sql server 2005的帮助 ] 其语法如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] 简要说明一下:   第一个参数:{ msg_id |

谈一谈SQL Server中的执行计划缓存(上)

原文:谈一谈SQL Server中的执行计划缓存(上) 简介     我们平时所写的SQL语句本质只是获取数据的逻辑,而不是获取数据的物理路径.当我们写的SQL语句传到SQL Server的时候,查询分析器会将语句依次进行解析(Parse).绑定(Bind).查询优化(Optimization,有时候也被称为简化).执行(Execution).除去执行步骤外,前三个步骤之后就生成了执行计划,也就是SQL Server按照该计划获取物理数据方式,最后执行步骤按照执行计划执行查询从而获得结果.但查询