Delphi取局域网上所有的SQL服务器名称
2009-08-21 10:47
465 查看
unit GetSQLServerUnt; interface uses ADODB, OleDB, ActiveX, ComObj, ADOInt, ADOConst, Classes, Windows, SysUtils, DB; const CLSID_SQLOLEDB_ENUMERATOR: TGUID = '{DFA22B8E-E68D-11d0-97E4-00C04FC2AD98}'; function CreateADOObject(const ClassID: TGUID): IUnknown; //取得局域上所有的SQL服务器名 procedure getSQLServerNames(Names: TStrings); implementation function CreateADOObject(const ClassID: TGUID): IUnknown; var Status: HResult; FPUControlWord: Word; begin asm FNSTCW FPUControlWord end; Status := CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, Result); asm FNCLEX FLDCW FPUControlWord end; if (Status = REGDB_E_CLASSNOTREG) then raise Exception.CreateRes(@SADOCreateError) else OleCheck(Status); end; procedure getSQLServerNames(Names: TStrings); var RSCon: ADORecordsetConstruction; Rowset: IRowset; SourcesRowset: ISourcesRowset; SourcesRecordset: _Recordset; SourcesName, SourcesType: TField; begin SourcesRecordset := CreateADOObject(CLASS_Recordset) as _Recordset; RSCon := SourcesRecordset as ADORecordsetConstruction; SourcesRowset := CreateComObject(CLSID_SQLOLEDB_ENUMERATOR) as ISourcesRowset; OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset))); RSCon.Rowset := RowSet; with TADODataSet.Create(nil) do try Recordset := SourcesRecordset; First; SourcesName := FieldByName('SOURCES_NAME'); { do not localize } SourcesType := FieldByName('SOURCES_TYPE'); { do not localize } Names.BeginUpdate; try while not EOF do begin if SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE then Names.Add(SourcesName.AsString); Next; end; finally Names.EndUpdate; end; finally Free; end; end; end.
相关文章推荐
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL
- 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。
- sql 获取指定数据表的所有字段名称的字符串
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL
- sql 查询表中所有字段的名称
- 使用SQL语句获得服务器名称和IP 地址
- ZT:得到所有的SQL服务器
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: SQL
- C#获得网络中所有SQL Server服务器数据库名称
- SQL查询所有数据库名称,表大小
- 查数据库中所有表名中含某个字符串的表的名称及字段信息sql脚本
- SQL 统一更改转换所有表或指定表所有列或指定列的类型 名称 长度 精度
- sql 获取指定数据表的所有字段名称的字符串
- SQL Server 2008中获取数据库所有表及其字段名称、类型、长度的SQL
- 如何编程ms sql server 2000 查询某个表的所有触发器名称
- SQL中如何根据已知的主键查询所有引用这个主键的外键约束的名称
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL
- 查询SQL服务器所有数据库名
- 清除 SQL Server Management Studio 服务器名称历史记录
- [Magento SQL] 更加分类名称,查询该分类下所有的sku