Sql服务器及数据库枚举
1. 枚举局域网内所有的SQLSERVER实例
函数:
function GetAllServerInstances :TStringList;
var
oApplication ,
oSeverNameList : Variant ;
i : integer ;
sNameList : TStringList ;
begin
sNameList := TStringList.Create ;
oApplication := CreateOLEObject ('SQLDMO.Application') ;
oSeverNameList := oApplication.ListAvailableSQLServers ;
for i:= 1 to oSeverNameList.Count do
sNameList.Append (oSeverNameList.Item(i)) ;
Result := sNameList ;
oApplication := NULL;
oSeverNameList := NULL;
end;
2.登陆到指定的SQLSERVER实例
函数:
function LoginServerInstances (sServer,sUser,sPassword :string):Variant;
var
oSQLServer : Variant ;
begin
oSQLServer := CreateOLEObject ('SQLDMO.SQLServer');
oSQLServer.LoginTimeout := 30;
oSQLServer.LoginSecure := False;
oSQLServer.AutoReconnect := True;
oSQLServer.Connect(sServer,sUser,sPassword);
Result := oSQLServer;
oSQLServer := NULL ;
end;
以上两个函数可以帮助我们完成取得局域网内所有的SQLSERVER实例并且
登陆上一个指定的实例。接下来就看看如何取得指定数据库的表名称和存储
过程名称 :
3.枚举指定Sqlserver实例所有database的名称
函数:
function GetAllDatabaseNameList (oSQLServer : Variant ):TStringList;
var
sNameList : TStringList ;
i : integer;
begin
sNameList := TStringList.Create ;
for i:= 1 to oSQLServer.Databases.Count do
sNameList.Append (oSQLServer.Databases.Item(i).Name) ;
Result := sNameList ;
end;
4.枚举指定数据库所有Table的名称
函数:
function GetAllTableNameList (oSQLServer : Variant ; sDataBaseName : string ):TStringList;
var
oDatabase : Variant ;
sNameList : TStringList ;
i : integer;
begin
sNameList := TStringList.Create ;
oDatabase := CreateOLEObject ('SQLDMO.Database');
oDatabase := oSQLServer.Databases.Item(sDataBaseName);
for i:= 1 to oDatabase.Tables.Count do
sNameList.Append (oDatabase.Tables.Item(i).Name) ;
Result := sNameList ;
oDatabase := Null ;
end;
5.枚举指定数据库所有StoreProcedure的名称
函数:
function GetAllStoreProcedureNameList (oSQLServer : Variant ; sDataBaseName : string ):TStringList;
var
oDatabase : Variant ;
sNameList : TStringList ;
i : integer;
begin
sNameList := TStringList.Create ;
oDatabase := CreateOLEObject ('SQLDMO.Database');
oDatabase := oSQLServer.Databases.Item(sDataBaseName);
for i:= 1 to oDatabase.StoredProcedures.Count do
sNameList.Append (oDatabase.StoredProcedures.Item(i).Name) ;
Result := sNameList ;
oDatabase := Null ;
end;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!