后台服务器是:sql server 2000里面的数据库有:database1,......,databasen,每个database下面有如果干个表现在用delphi连接到sql server 2000 中的某个数据库,然后可以动态加载该数据库下面的表:ADOConnection1.GetTableNames(ComboBox1.Items); 请问在连接到sql server 2000 时,如何获知用户的数据库,也加载到combobox中但不包括system那些数据库谢谢

解决方案 »

  1.   

    SELECT Name FROM Master..SysDatabases ORDER BY Name
      

  2.   

    上面這句是獲取所有的數據庫以下這句是獲取用戶創建的所有數據庫:
    select * from master..sysdatabases D where sid not in(select sid frommaster..syslogins where name='sa')或者select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
     
      

  3.   

    获取用户表select name from sysobjects where xtype='U'and name<>'dtproperties' 
      

  4.   

    procedure TRES_HR_CQAUDIT_F.cxTabSheet1Show(Sender: TObject);
    begin
      ComboBox1.Items.Clear;
      ComboBox1.Text:='';
      qry_BaseTemp.Close;
      qry_BaseTemp.SQL.Text:=' select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 ';
      qry_BaseTemp.Open;
      while not qry_BaseTemp.Eof do
      begin
        ComboBox1.Items.Add(Trim(qry_BaseTemp.FieldValues['DB_NAME']));
        qry_BaseTemp.Next;
      end;
    end;
      

  5.   

    一般都是查元数据表(DBMS术语一般称作数据字典),也有些DBMS提供内置存储过程
    对于SQL Server,参考:
    SQL获取所有数据库名、表名、储存过程以及参数列表