如何简单地根据 'IP地址,端口','用户名/密码' ,就能列出SQL 2005 Server的数据库名? 
-------------------------------------------------------------------- 
用ADOConnection1设置连接参数时,如果填上'IP地址,端口',再填上"用户名/密码", 
下面就可列出所有用户数据库名,再选中自已的库, 
如何在程序中列出所有库名呢?  因为我的库名是工控软件WINCC产生的,较长,会有变化,较难确定, 
让客户自已选较方便. 

解决方案 »

  1.   

    你查询SQL Server中master数据库的sysdatabases数据表就能知道了。
      

  2.   

    http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.aspx
      

  3.   

    function Tfrm_Rep_Initiate.Exist_Database(dbName: String): Boolean;  // 是否存在当前表
    begin
      if (_DATABASE = 'ACCESS') then
        Result := FileExists(_DIR_APP+dbName+'.mdb')
      else begin
        if DM.TmpSP.Active then DM.TmpSP.Close;
        DM.TmpSP.ConnectionString := GetConnString('SQLSERVER','master');
        DM.TmpSP.ProcedureName := 'sp_databases';  // Master 的存储过程,取数据库名
        try
          DM.TmpSP.Open;
          Result := DM.TmpSP.Locate('DATABASE_NAME',dbName,[]);
        except
          Result := False;
          Application.MessageBox('连接远程报表库服务器失败','Sraft 提示',16);
        end;
      end;
    end;
      

  4.   

    使用SQL2005的SMO!
    To 3楼:
    ADO的连接字符串都没拼好,如何使用系统存储过程sp_databases
      

  5.   

    To 3楼
    Sorry,我理解错误!
      

  6.   


    QRY.close;
    qry.sql.text:='SELECT [NAME] FROM sysdatabases';
    qry.open;
      

  7.   

    SQL2007Server的 master数据库中并没有
    sysdatabases数据表
      

  8.   


    //自MSSQL2005后,一些与系统相关的表均被封装为视图,来避免用户直接修改系统表
    select * from sys.databases