类似于.udl文件,delphi 如何列出某一个服务器 上的所有数据库?

解决方案 »

  1.   

    http://www.cnblogs.com/iinsnian/archive/2008/06/06/1214814.html
    function getAllDataBases(serverName,LoginName,LoginPassword:String):TStringList;
    var
      oSqlServer :_SqlServer;
      rtn :TStringList;
      odataBase :_DataBase;
      count,i :Integer;
    begin
      try
        osqlServer :=coSqlServer.Create;
        osqlServer._AddRef;
        osqlServer.Connect(ServerName,LoginName,LoginPassword);
        count :=osqlServer.Databases.Count;
        rtn :=TStringList.Create;
        
        for i :=1 to count do
        begin
          odataBase :=osqlserver.Databases.Item(i,‘owner‘);
          rtn.Append(odataBase.Name);
        end;
        
        result :=rtn;
        osqlServer.DisConnect;
        oSqlServer._Release;
        osqlServer :=nil;
      except
        on E :Exception do
        begin
          application.MessageBox(Pchar(‘取SQLSERVER資料庫列表出錯了‘+E.message),‘系統提示‘,MB_OK+MB_ICONSTOP);
        end;
      end;
    end;
    或者直接连接到实例上,通过扫描系统表来实现,系统表好像叫Master.dbo.sysdatabases
      

  2.   

    最简单是:adoquery.sql.txt:= 'select name from master.dbo.sysdatabases where sid > 0x01';