如何得到SQLSERVER中的所有数据库,及数据库中的表呀???
那位作过,给个代码

解决方案 »

  1.   

    使用Master.数据库的Sysobjects表可以得到数据库中所有表
    with adoquery do
    begin
      active := false
      sql.clear;
      sql.add('select name from sysobjects');
      active := true;
    end;
      

  2.   

    sp_databases  
    列出驻留在  Microsoft®  SQL  Server™  实例中的数据库或可以通过数据库网关访问的数据库。  
     
    语法  
    sp_databases  
     
    返回代码值  
    无  
     
    结果集  
    列名  数据类型  描述    
    DATABASE_NAME  sysname  数据库的名称。在  SQL  Server  中,此列代表存储在  sysdatabases  系统表中的数据库的名称。    
    DATABASE_SIZE  int  数据库的大小(以  KB  计)。    
    REMARKS  varchar(254)  对于  SQL  Server,该字段的返回值为  NULL。    
     
     
    注释  
    在  SQL  Server  中,sp_databases  返回在  sysdatabases  系统表中列出的数据库。由于数据库网关所访问的一些数据库管理系统  (DBMS)  没有数据库概念,所以如果发送到基于  Microsoft  开放式数据服务的网关,该存储过程可能不返回任何行。  
     
    所返回的数据库名称可以作为  USE  语句的参数,用来更改当前数据库上下文。  
     
    sp_databases  在开放式数据库连接  (ODBC)  中没有等价的过程。  
     
    权限  
    执行权限默认授予  public  角色。  
     
    ************************************************************  
    sp_tables  
    返回当前环境下可查询的对象的列表(任何可出现在  FROM  子句中的对象)。  
     
    语法  
    sp_tables  [  [  @table_name  =  ]  'name'  ]  
           [  ,  [  @table_owner  =  ]  'owner'  ]  
           [  ,  [  @table_qualifier  =  ]  'qualifier'  ]  
           [  ,  [  @table_type  =  ]  "type"  ]  
     
    参数  
    [@table_name  =]  'name'  
     
    用来返回目录信息的表。name  的数据类型为  nvarchar(384),默认值为  NULL。支持通配符模式匹配。  
     
    [@table_owner  =]  'owner'  
     
    用来返回目录信息的表的所有者。owner  的数据类型为  nvarchar(384),默认值为  NULL。支持通配符模式匹配。如果没有指定  owner,则采用基础  DBMS  默认的表可视性规则。  
     
    在  Microsoft®  SQL  Server™  中,如果当前用户拥有的表具有指定名称,则返回该表的列。如果未指定所有者,且当前用户未拥有指定名称的表,则该过程查找由数据库所有者拥有的具有指定名称的表。如果有,则返回该表的列。  
     
    [@table_qualifier  =]  'qualifier'  
     
    是表限定符的名称。qualifier  的数据类型为  sysname,默认设置为  NULL。多种  DBMS  产品支持表的三部分命名方式  (qualifier.owner.name)。在  SQL  Server  中,该列表示数据库名。在某些产品中,该列表示表所在数据库环境的服务器名。  
     
    [,[@table_type  =]  "'type'"]  
     
    值的列表,由逗号分隔,它给出指定表类型的所有表的有关信息,包括  TABLE、SYSTEM  TABLE  和  VIEW。type  的数据类型为  varchar(100),默认值为  NULL。  
     
     
     
    说明    每个表类型都必须用单引号括起来,整个参数必须用双引号括起来。表类型必须大写。如果  SET  QUOTED_IDENTIFIER  为  ON,那么每个单引号必须换成双引号,整个参数必须用单引号括起来。    
     
     
    返回代码值  
    无  
     
    结果集  
    列名  数据类型  描述    
    TABLE_QUALIFIER  sysname  表限定符名称。在  SQL  Server  中,该列表示数据库名。该字段可以为  NULL。    
    TABLE_OWNER  sysname  表所有者名称。在  SQL  Server  中,该列表示创建表的数据库用户的姓名。该字段始终返回值。    
    TABLE_NAME  sysname  表名。该字段始终返回值。    
    TABLE_TYPE  varchar(32)  表、系统表或视图。    
    REMARKS  varchar(254)  SQL  Server  不为该列返回值。    
     
     
    注释  
    为达到最大互操作性,网关客户应假定只有  SQL-92  标准的  SQL  模式匹配(%  和  _  通配符)。  
     
    并不总是检验有关当前用户对特定表的读写特权信息,因此不能确保访问。这个结果集不仅包含表和视图,还包含网关的同名和别名,这些网关通往支持这些类型的  DBMS  产品。如果在  sp_server_info  的结果集中,服务器特性  ACCESSIBLE_TABLES  是  Y,则只返回当前用户可访问的表。    
     
    sp_tables  与  ODBC  中的  SQLTables  等同。返回结果按  TABLE_TYPE、TABLE_QUALIFIER、TABLE_OWNER  和  TABLE_NAME  顺序排列。    
     
    权限  
    执行权限默认授予  public  角色。  
     
    示例  
    A.  返回可在当前环境中查询的对象的列表  
    EXEC  sp_tables  
     
    B.  返回  Company  数据库中表  syscolumns  的有关信息  
    EXEC  sp_tables  syscolumns,  dbo,  Company,  "'SYSTEM  TABLE'"  
      

  3.   

    select * from sysobjects where xtype='u'
    select * from syscolumns where id=当前表的id
    select * from sysTypes where xtype=当前syscolumns 的xtype的id