检测局域网电脑是否有安装SQLServer数据库

本文主要介绍如何检测局域网中的电脑是否有安装SQL Server数据库,并将其列出的方法。接下来我们就开始介绍这一过程的实现。

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、网站建设、外贸网站建设、东西湖网络推广、微信小程序、东西湖网络营销、东西湖企业策划、东西湖品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供东西湖建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

引用SQL DMO组件。

 
 
 
  1. //取得本局域网内所有可用sql服务器名
  2. cmbServer.Items.Clear();
  3. try
  4. {
  5. SQLDMO.Application app = new SQLDMO.ApplicationClass();
  6. SQLDMO.NameList list = app.ListAvailableSQLServers();
  7. int iCount = list.Count;
  8. for(int i = 0; i < iCount; i ++)
  9. {
  10. string sTemp = list.Item(i);
  11. if(sTemp != null)
  12. cmbServer.Items.Add(sTemp);
  13. }
  14. }
  15. catch
  16. {
  17. //如果取得SQLDMO组件出错, 则默认把本机名写进去
  18. MessageBox.Show("无法取得服务器列表,可能是缺少SDLDMO.DLL!");
  19. cmbServer.Items.Add(System.Net.Dns.GetHostName());
  20. }

为什么我用panyee(快乐王子)的那个例子一直出现“无法取得服务器列表,可能是缺少SDLDMO.DLL”,我有这个文件啊!

如果用“http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=BCEAADFB-CFF3-4804-B3B3-6C7D6488982B”里的例子也不行会出现以下信息:

"未处理的“System.InvalidCastException”类型的异常出现在WindowsApplication1.exe 中。

其他信息:接口SQLDMO.NameList 的QueryInterface 失败。

怎么回事,请高手帮帮忙啊!

***,你的SQL Server数据库版本不够。如果要使用SQLDMO.DLL就要去下载SQL sp2.

第二,如果你想列出局域网内的所有的SQl server。建议你用Sql server自带的 isql.exe 这个文件只要是sql server 6.5以上就可以了。

下面是源码:

 
 
 
  1. string fileName = "C:\\Program Files\\Microsoft SQL Server\\80\\Tools\\Binn\\isql.exe";
  2. if(System.IO.File.Exists(fileName))
  3. {
  4. System.Diagnostics.ProcessStartInfo processStartInfo = new System.Diagnostics.ProcessStartInfo(fileName,"-L");
  5. processStartInfo.UseShellExecute = false;
  6. processStartInfo.CreateNoWindow = true;
  7. processStartInfo.RedirectStandardOutput = true;
  8. processStartInfo.RedirectStandardError = true;
  9. System.Diagnostics.Process process = System.Diagnostics.Process.Start(processStartInfo);
  10. process.WaitForExit();
  11. cboServerList.Items.Clear();
  12. int line = 1;
  13. string server = null;
  14. while(process.StandardOutput.Peek() > -1)
  15. {
  16. server = process.StandardOutput.ReadLine().Trim();
  17. line +=1;
  18. if ( line > 6)
  19. {
  20. cboServerList.Items.Add(server);
  21. }
  22. server = null;
  23. }
  24. }
  25. cboServerList.Items.Remove(System.Environment.MachineName);
  26. cboServerList.Items.Add("localhost");

cboServerList是一个ComoBox。

你可以现在cmd中输入isql.exe -? 看看参数序列中有没有你想要的。

至于说列出局域网内的SQL Server数据库要输入 isql -L就可以了。

 
 
 
  1. private void cmbDatabase_Enter(object sender, System.EventArgs e)
  2. {
  3. //取得某服务器上的各个表名
  4. string strServer = cmbServer.Text;
  5. string strUid = txtUid.Text;
  6. if(strServer.Trim() != "" && strUid.Trim() != "")
  7. {
  8. string strPwd = txtPwd.Text;
  9. string strConn = "server=" + strServer + ";database=master;uid=" + strUid + ";pwd=" + strPwd;
  10. SqlConnection conn = null;
  11. try
  12. {
  13. conn = new SqlConnection(strConn);
  14. string strSQL = "select * from sysdatabases order by dbid";
  15. SqlDataAdapter cmd = new SqlDataAdapter(strSQL, conn);
  16. DataSet ds = new DataSet();
  17. cmd.Fill(ds, "Databases");
  18. cmbDatabase.Items.Clear();
  19. for(int i = 0; i < ds.Tables["Databases"].Rows.Count; i ++)
  20. {
  21. string strDb = ds.Tables["Databases"].Rows[i]["name"].ToString();
  22. cmbDatabase.Items.Add(strDb);
  23. }
  24. }
  25. catch(Exception ex)
  26. {
  27. MessageBox.Show(ex.ToString());
  28. }
  29. finally
  30. {
  31. if(conn.State == ConnectionState.Open)
  32. conn.Close();
  33. }
  34. }
  35. this.Cursor = Cursors.Default;
  36. }

 这样,我们就能检测到局域网内是否安装有SQL Server数据库,并能将其列出了。本文就介绍到这里,希望能对您有所帮助。

分享名称:检测局域网电脑是否有安装SQLServer数据库
网页路径:http://www.csdahua.cn/qtweb/news31/51581.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网