如何获得局域网内的sql2000数据库名称(以下几种方法来自网络CSDN)

方法1: 可以用Indy的UDPClient组件来实现
   
   
procedure TForm1.Button1Click(Sender: TObject); var s : String; begin IdUDPClient1.Broadcast(chr( 2 ), 1434 ); repeat s : = IdUDPClient1.ReceiveString( 5000 ); if s <> '' then Memo1.Lines.Add(Copy(S, 4 , Length(S) - 3 )); until s = '' ; end ;

返回的内容是由分号分隔的一系列信息的字符串, 包括服务器名、版本号、TCP端口、管道名等,很乱结果,还需要自己获取
   
   
想要的信息。
   
   
方法2:
   
   
{ ================================================================= 功 能 : 返回网络中SQLServer列表 参 数 : List: 需要填充的TstringList 返回值: 成功: True,并填充List 失败 False 备 注 : 需引用 ComObj 版 本 : 1.0 2002/10/02 22:44:00 ================================================================= } function TForm1.GetSQLServerList(List: TstringList): boolean; var i: integer; SQLServer: Variant; ServerList: Variant; begin 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 ;
   
   
请教高手,我在调用的时候为什么会提示:Access Violation at address 77DF5A6 IN MODULE 'USER32.DLL'
 
 
方法3:太长,水平有限,没试过
CREATE PROCEDURE EnumerateSQLServers AS /* 存储过程名称: EnumerateSQLServers 作者 : Srdjan Josipovic 日期 : 2002-06-19 目的 :使用SQLDMO和TSQL列出所有可用的实例 翻译整理 :王成辉 */ DECLARE @retval int DECLARE @result varchar(500) DECLARE @object int DECLARE @objectList int DECLARE @src varchar(254) DECLARE @desc varchar(255) DECLARE @resultsCount int DECLARE @counter int DECLARE @method varchar(255) --创建SQLDMO对象 EXEC @retval = sp_OACreate 'SQLDMO.Application', @object OUT --检查对象是否创建成功 IF @retval <> 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc RETURN END --调用方法ListAvailableServers() , 为SQLDMO.NameList得到Object_ID EXEC @retval = sp_OAMethod @object , 'ListAvailableSQlServers()' , @objectList OUT -- 是否有错误? IF @retval <> 0 BEGIN EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc RETURN END --计算局域网里的服务器数量 EXEC @retval = sp_OAGetProperty @objectList , 'Count' , @resultsCount OUT --再一次进行错误处理 IF @retval <> 0 BEGIN EXEC sp_OAGetErrorInfo @objectList, @src OUT, @desc OUT SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc RETURN END --如果有服务器的话,进入处理..... IF @resultsCount > 0 BEGIN SET @counter = 1 DECLARE @ServersTbl table (ServerID int IDENTITY ,ServerName varchar(255)) WHILE @counter <= @resultsCount BEGIN --列出SQL实例:一个名字接一个名字的列出 SET @method = 'Item(' + convert(varchar(3),@counter) + ')' EXEC @retval = sp_OAGetProperty @objectList ,@method , @result OUT --将数据存到临时表 INSERT INTO @ServersTbl (ServerName) SELECT @result --移到下一条记录 SET @counter = @counter + 1 END END ELSE BEGIN SET @result = 'No Servers around you' INSERT INTO @ServersTbl (ServerName) SELECT @result END --释放对象 EXEC @retval = sp_OADestroy @object IF @retval <> 0 BEGIN EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT SELECT hr=convert(varbinary(4),@retval), Source=@src, Description=@desc RETURN END --好了,可以列出所有可用的实例了 .... SELECT * FROM @ServersTbl GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和海风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值