1
SQL DMO2
只有登陆后才能:
获得这个服务器上的数据库名最后获得
这个数据库的所有用户表

解决方案 »

  1.   

    /*************得到本地局域网内sqlserver的服务器列表**********
    ------------------------2003/11/21/gmlxf-----------------
    */
    if exists(select name from dbo.sysobjects where id=object_id(N'dbo.p_ListLocalServers') and objectproperty(id,N'IsProcedure')=1)
    drop proc p_ListLocalServers
    go
    create proc dbo.p_ListLocalServers 
    as
    begin
    set nocount on
    create table #servers(sname varchar(255))
    insert #servers exec master..xp_cmdshell 'osql -L'
    select ltrim(sname) serverName from #servers where sname!='Servers:' and sname!='服务器:' and sname != 'NULL' 
    drop table #servers 
    end
    go
    --调用
    exec p_ListLocalServers
      

  2.   

    function  TFormDataSet.GetSQLServer(ComboBox:  TComboBox):  Boolean;  
    var  
       SQLServer:  Variant;  
       ServerList:  Variant;  
       i,  nServers:  integer;  
       sRetValue:  string;  
    begin  
       ComboBox.Items.Clear;  
       Result  :=  False;  
       try  
           Screen.Cursor  :=  crHourGlass;  
           SQLServer  :=  CreateOleObject('SQLDMO.Application');  
           ServerList  :=  SQLServer.ListAvailableSQLServers;  
           nServers  :=  ServerList.Count;  
           for  i  :=  1  to  nServers  do  
               ComboBox.Items.Add(ServerList.Item(i));  
           SQLServer  :=  NULL;  
           ServerList  :=  NULL;  
           Result  :=  True;  
           cbSQLServer.Style  :=  csDropDownList;  
       except  
       end;  
       Screen.Cursor  :=  crDefault;  
    end;
      

  3.   

    连上数据库后
    执行
    declare @a varchar(30)
    set @a='pubs'
    exec('select name from '+@a+'.dbo.sysobjects  where type=''u''')可得到该数据库的用户表名
      

  4.   

    to:playyuer(双规干部)
    function  TFormDataSet.GetSQLServer(ComboBox:  TComboBox):  Boolean;  
    var  
       SQLServer:  Variant;  
       ServerList:  Variant;  
       i,  nServers:  integer;  
       sRetValue:  string;  
    begin  
       ComboBox.Items.Clear;  
       Result  :=  False;  
       try  
           Screen.Cursor  :=  crHourGlass;  
           SQLServer  :=  CreateOleObject('SQLDMO.Application');  
           ServerList  :=  SQLServer.ListAvailableSQLServers;  
           nServers  :=  ServerList.Count;  
           for  i  :=  1  to  nServers  do  
               ComboBox.Items.Add(ServerList.Item(i));  
           SQLServer  :=  NULL;  
           ServerList  :=  NULL;  
           Result  :=  True;  
           cbSQLServer.Style  :=  csDropDownList;  //怎么我在delphi 里面这个报错?
    //把他改成 combobox.style :=  csDropDownList; 或 去掉!就好了! 但这句话起什么作用啊?
       except  
       end;  
       Screen.Cursor  :=  crDefault;  
    end;