如题。
(Delphi)

解决方案 »

  1.   

    SQL Server的安装软件就能查。
    下载一个RegMon,然后启动SQL Server安装软件,监视它访问哪些注册表项。
      

  2.   

    谢谢  steedhorse(晨星) 的回答!
    我知道是通过查注册表,但具体怎么做就不清楚,所以想请教有经验的朋友。
      

  3.   

    有一个本的方法:就是查找已安装的SQl server 个数,如果为零既没有安装
    delphi在Comobj单元中提供了一个SQLDMO,查出的网络机器名和本机的名字比
    较就可以得到指定的计算机是否装了SQl server;下面给出了获得所有已装
    SQl server的代码:只要获得本地的名字,进行比较就行了
    procedure TForm1.Button1Click(Sender: TObject);
    var
       SQLServer:Variant;
       ServerList:Variant;
       i,nServers:integer;
       sRetValue:String;
    begin
      SQLServer := CreateOleObject('SQLDMO.Application');
      ServerList:= SQLServer.ListAvailableSQLServers;
      nServers:=ServerList.Count;
      for i := 1 to nservers do
          ListBox1.Items.Add(ServerList.Item(i));
      SQLServer:=NULL;
      serverList:=NULL;
    end; 
      

  4.   

    有个函数可以列出网内所有的SQL服务器
    function GetSQLServerList(var List: Tstringlist): boolean;
    var
      i: integer;
      sRetValue: string;
      SQLServer: Variant;
      ServerList: Variant;
    begin
      Result := False;
      List.Clear;
      try
        SQLServer := CreateOleObject('SQLDMO.Application');
        ServerList := SQLServer.ListAvailableSQLServers;
        for i := 1 to Serverlist.Count do
          list.Add(Serverlist.item(i));
        Result := True;
      finally
        SQLServer := NULL;
        ServerList := NULL;
      end;
    end;
      

  5.   

    dragon_cbx(豫龙)  与  popmailzjw(什麼都不會) 所提供的方法相同,我试过,可行。
    但这两句出错:
    —— SQLServer := NULL;
    —— ServerList := NULL;
      

  6.   

    有问题!
    ——我将SQLServer服务器停止后,也检测不到本机已装了SQLServer。而且有内存错误。
      

  7.   

    dragon_cbx(豫龙)   的方法是不是找处当前机器内可用的sqlserver  如果不开服务的话应该是不行的吧
      

  8.   

    查找的是局域网内的所有已打开服务的SQl Server。
      

  9.   

    我写了一个过程函数你可以看看!//===获取局域网内所有SQL Server 服务器列表函数
    procedure TDBBakResFrm.GetSQLServerLsit;
    var
      SQLServer: Variant;     //===保存SQL Server服务器对象
      ServerList: Variant;   //===保存SQL Server服务器名列表
      i, nServers: integer; //===记录服务器个数
    begin
      Cb_SQLSrvList.Items.Clear;      //===清空下拉列表
      try
        SQLServer := CreateOleObject('SQLDMO.Application');   //===创建SQL Server对象
        ServerList := SQLServer.ListAvailableSQLServers;     //===保存所有SQL Server服务器列表信息
        nServers := ServerList.Count;                       //===记录局域网内有多少个SQL Server服务器
        for i := 1 to nServers do                          //===用For循环一个个加进下拉列表Cb_SQLSrvList中
          Cb_SQLSrvList.Items.Add(ServerList.Item(i));  //把网内所有SQL服务添加到下拉列表中  
        Cb_SQLSrvList.ItemIndex := 0;                   //===设置下拉列表第一项为默认值
        SQLServer := NULL;                             //===还原变量
        serverList := NULL;                           //===还原变量
      except
        MessageBox(Handle,'您当前的机器没有安装SQL Server,无法导入SQL Server服务器列表,'+#13+#10+'请直接输入SQL Server服务器名称!','信息提示',MB_OK + MB_ICONINFORMATION);
      end;
    end;
      

  10.   

    SQLServer := NULL;                             //===还原变量
        serverList := NULL;                           //===还原变量这两句没有问题吗?应该用nil吧!!!