获取本地网络内所有SQLServer服务器列表
获取本地网络内所有SQLServer服务器列表获取本地网络内所有SQLServer服务器列表
using System; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace TECH.AdoClientLib { public class SqlLocator { [DllImport("odbc32.dll")] private static extern short SQLAllocHandle(short hType, IntPtr inputHandle, out IntPtr outputHandle); [DllImport("odbc32.dll")] private static extern short SQLSetEnvAttr(IntPtr henv, int attribute, IntPtr valuePtr, int strLength); [DllImport("odbc32.dll")] private static extern short SQLFreeHandle(short hType, IntPtr handle); [DllImport("odbc32.dll", CharSet = CharSet.Ansi)] private static extern short SQLBrowseConnect(IntPtr hconn, StringBuilder inString, short inStringLength, StringBuilder outString, short outStringLength, out short outLengthNeeded); private const short SQL_HANDLE_ENV = 1; private const short SQL_HANDLE_DBC = 2; private const int SQL_ATTR_ODBC_VERSION = 200; private const int SQL_OV_ODBC3 = 3; private const short SQL_SUCCESS = 0; private const short SQL_NEED_DATA = 99; private const short DEFAULT_RESULT_SIZE = 1024; private const string SQL_DRIVER_STR = "DRIVER=SQL SERVER"; private SqlLocator() { } /// <summary> /// 获取本地网站SQL Server列表 /// </summary> /// <returns></returns> public static string[] GetServers() { string[] retval = null; string txt = string.Empty; IntPtr henv = IntPtr.Zero; IntPtr hconn = IntPtr.Zero; StringBuilder inString = new StringBuilder(SQL_DRIVER_STR); StringBuilder outString = new StringBuilder(DEFAULT_RESULT_SIZE); short inStringLength = (short)inString.Length; short lenNeeded = 0; try { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, out henv)) { if (SQL_SUCCESS == SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (IntPtr)SQL_OV_ODBC3, 0)) { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, out hconn)) { if (SQL_NEED_DATA == SQLBrowseConnect(hconn, inString, inStringLength, outString, DEFAULT_RESULT_SIZE, out lenNeeded)) { if (DEFAULT_RESULT_SIZE < lenNeeded) { outString.Capacity = lenNeeded; if (SQL_NEED_DATA != SQLBrowseConnect(hconn, inString, inStringLength, outString, lenNeeded, out lenNeeded)) { throw new ApplicationException("Unabled to aquire SQL Servers from ODBC driver."); } } txt = outString.ToString(); int start = txt.IndexOf("{") + 1; int len = txt.IndexOf("}") - start; if ((start > 0) && (len > 0)) { txt = txt.Substring(start, len); } else { txt = string.Empty; } } } } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Acquire SQL Servier List Error"); txt = string.Empty; } finally { if (hconn != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_DBC, hconn); } if (henv != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_ENV, hconn); } } if (txt.Length > 0) { retval = txt.Split(",".ToCharArray()); } return retval; } } } 使用方法USAGE: string[] srvs = SqlLocator.GetServers(); foreach (string srv in srvs) _SrvList.Items.Add(srv);
参考文档:
查找局域网内的SQLServer服务器(实用类) 花生壳通过外网远程访问本地SQLServer服务器(原创) 监听WebAPI服务器所有用户请求 SQLServer LinkServer链接服务器:未将服务器配置为用于RPC SQLServer 服务器主体无法在当前安全上下文下访问数据库 IIS错误:由于Web服务器上的“ISAPI和CGI 限制”列表设置,无法提供您请求的页面 阿里云ECS服务器修改SQLServer默认1433端口 C#根据第三方提供的IP查询服务获取公网外网IP地址 SqlServer配置链接服务器LINKSERVER:ODBC连接MySQL数据库 软件开发与设计 - MIS-管理信息系统-InfoPath 网络服务器 v5.8.2 WCF错误“这可能是因为在HTTPS情况下使用HTTP.SYS未正确配置服务器证书” [其他类别]InfoPath 网络服务器 v5.8.2-源码下载 .Net开发服务器服务端应用程序 - WebApi后端开发框架 热烈祝贺CSFramework.COM于20211111双十一迁移新服务器!!! WCF开发框架之WCF服务器配置文件 - Web.config
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |