怎样检测到是否已安装了SQL Server的数据库服务器端?若有,如何再检测是否已建立了指定名称的数据库?

saucerman 2000-03-04 04:05:00
***saucerman:
在C++ Builder中,怎样检测到本机是否安装了SQL Server的数据库Server端?
(不管C/S还是DeskTop版)
若检测到存在,数据库服务器的名称是什么?版本是多少?
并且其中是否已建立了指定名称的数据库及其中的表?(比如名为mydatabase的数据库)
请最好给出例程。多谢! 不凭借SQL Server的DB Library不可能直接获知本机是否安装该数据库.

***guo:
在Delphi中可以通过ADOC间接获知本机是否安装该数据库(用户要输入一些信息如服务器名及登录用户名、密码).
至于知道数据库中的数据表而没有用户名、密码,那根本不可能.

***saucerman:
绝对不对!我要是已经知道了数据库服务器名及登录用户名、密码等,
那么这个问题就没什么意义了!
我相信一定会有办法的,看那位大侠知道了。
最笨我也可以通过在全盘搜索.MDF,.LDF或.DAT文件知道有没有SQL Server和Sybase
文件吧?
再者我还可以搜索Regisrty,SQL Server如果在本机上安装,不会一点也不向注册表
里写东西吧?至于在哪儿写的,都写了些什么,我也不太清楚,有哪位大侠能告诉我,
将不胜感激!

***saucerman:
真的这问题这么难吗?始料未及!
一直不相信,觉着应该有方法知道在本机上是否已安装了
SQL Server的数据库服务器端。
就不信——如果在本机上装了Server端会一点没有留痕迹,会一点没办法知道!
是不是该加分了——重赏之下必有勇夫!
在Delphi再贴一下吧,那里人气旺!
BCB和Delphi两下加起来可达到了150个点!
我可是穷人——所剩无几了!

...全文
736 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_life 2001-11-18
  • 打赏
  • 举报
回复
往往
cobi 2001-11-18
  • 打赏
  • 举报
回复
929()把整个注册表都给你导出来了
929 2000-03-04
  • 打赏
  • 举报
回复
REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer]

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\Client]
"PacketSize"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\Client\DB-Lib]
"AutoAnsiToOem"="off"

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\ISQL/w]
"ExtnOpen"="*.SQL"
"ExtnSave"="*.RPT"
"UndoOps"=dword:00000014
"EditControlFont"=hex:f3,ff,ff,ff,00,00,00,00,00,00,00,00,00,00,00,00,90,01,00,\
00,00,00,00,00,00,01,00,30,43,6f,75,72,69,65,72,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\ISQL/w\Recent File List]
"File1"="D:\\bazh\\db104\\ALL106.sql"

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQL Interface]

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQL Interface\Graphs]

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQL Interface\Graphs\Database New]
"BarVertical"=dword:00000000
"BarDisplayMode"=dword:00000000
"UnitsLabel"=dword:00000001
"TitleLabel"=dword:00000000
"SolidColors"=dword:00000000
"PrintWithColors"=dword:00000001
"PrintDataNTime"=dword:00000001
"PrintLegend"=dword:00000001
"PrintDateNTimeFontSize"=hex:00,00,00,00,00,00,e8,3f
"PrintLegendFontSize"=hex:00,00,00,00,00,00,e8,3f
"CurrentPrimitive"="Bar Graph"

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQL Interface\Graphs\Device New]
"BarVertical"=dword:00000000
"BarDisplayMode"=dword:00000000
"UnitsLabel"=dword:00000001
"TitleLabel"=dword:00000000
"SolidColors"=dword:00000000
"PrintWithColors"=dword:00000001
"PrintDataNTime"=dword:00000001
"PrintLegend"=dword:00000001
"PrintDateNTimeFontSize"=hex:00,00,00,00,00,00,e8,3f
"PrintLegendFontSize"=hex:00,00,00,00,00,00,e8,3f
"CurrentPrimitive"="Bar Graph"

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQLEW]
"PromptBeforeExit"=dword:00000001
"ResultSwitch"=dword:00000001
"AutoDisconnect"=dword:00000000
"UserRegistrationInfo"=dword:00000001
"AutoShowTips"=dword:00000000
"Login Timeout"=dword:00000005
"Query Timeout"=dword:00000000
"UndoMode"=dword:00000000
"ViewToolBar"=dword:00000001
"ViewStatusBar"=dword:10000000
"ViewExternalToolsBar"=dword:00000001
"ServerStatePoll"=dword:0000000a
"ServerDimensions"=hex:00,00,00,00,00,00,00,00,08,01,00,00,ae,01,00,00
"RegisteredServersSource"=""
"LastSQLServer"="GREATWALL"
"WindowDimensions"="0,1,1,800,600"

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQLEW\Registered Servers]
"RegistrationVersion"=dword:00000003

[HKEY_CURRENT_USER\Software\Microsoft\MSSQLServer\SQLEW\Registered Servers\SQL 6.5]
"GREATWALL"=hex:47,52,45,41,54,57,41,4c,4c,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,73,61,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,6a,37,34,39,32,39,74,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
b0,e0,14,00,01,00,00,00,00,00,00,00,06,00,00,00,32,00,00,00,01,00,00,00,01,\
00,00,00,02,00,00,00,01,00,00,00,00,00,00,00

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\DB-Lib]
"AutoAnsiToOem"="ON"
"UseIntlSettings"="ON"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\TDS]
"greatwall"="4.2"
"(local)"="4.2"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer]
"ResourceMgrID"="{870E3FE0-964A-11D3-B261-00D0091356F9}"
"Tapeloadwaittime"=dword:ffffffff
"LoginMode"=dword:00000000
"DefaultLogin"="guest"
"DefaultDomain"="GREAT"
"AuditLevel"=dword:00000000
"Map_"="\\"
"Map#"="-"
"Map$"=" "
"SetHostname"=dword:00000000
"ListenOn"=hex(7):53,53,4e,4d,50,4e,36,30,2c,5c,5c,2e,5c,70,69,70,65,5c,73,71,\
6c,5c,71,75,65,72,79,00,00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\CurrentVersion]
"RegisteredOwner"="JING"
"SerialNumber"=dword:81270040
"CurrentVersion"="6.50.416"
"RegisteredOrganization"="BANK"
"RegisteredProductID"="228-075-040-50649-415-0205025"
"SoftwareType"="System"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\Parameters]
"SQLArg0"="-dC:\\MSSQL\\DATA\\MASTER.DAT"
"SQLArg1"="-eC:\\MSSQL\\LOG\\ERRORLOG"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Replication]
"WorkingDirectory"="C:\\MSSQL\\REPLDATA"
"DistributionDB"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup]
"SQLPath"="C:\\MSSQL"
"SetupStatus"="Installed"
"CRC"="131009289"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQL Interface]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQL Interface\Graph Control]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQL Service Manager]
"Action Verify"=dword:00000000
"Services"=hex(7):4d,53,53,51,4c,53,65,72,76,65,72,00,53,51,4c,45,78,65,63,75,\
74,69,76,65,00,4d,53,44,54,43,00,00
"DefaultSvc"="MSSQLServer"
"Remote"=dword:00000001
"Background Interval"=dword:00000005
"Foreground Interval"=dword:00000002
"WindowDimensions"="0,262,193,275,214"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLExecutive]
"CmdExecAccount"=hex:49,b6,89,d7,a8,1e,63,bd,bd,c0,44,de,7b,22,b0,77
"NonAlertableErrors"="1204,4002"
"TaskHistoryMaxRows"=dword:00000064
"RestartSQLServer"=dword:00000001
"RestartSQLServerInterval"=dword:00000005
"SyshistoryLimitRows"=dword:00000001
"SyshistoryMaxRows"=dword:000003e8
"MailAutoStart"=dword:00000001
"ServerHost"=""

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLExecutive\Subsystems]
"CmdExec"="C:\\MSSQL\\BINN\\CMDEXEC.DLL,CmdExecStart,CmdEvent,CmdExecStop,10"
"Sync"="C:\\MSSQL\\BINN\\SQLREPL.DLL,sync_start,sync_event,sync_stop,100"
"LogReader"="C:\\MSSQL\\BINN\\SQLREPL.DLL,logreader_start,logreader_event,logreader_stop,25"
"Distribution"="C:\\MSSQL\\BINN\\SQLREPL.DLL,distribution_start,distribution_event,distribution_stop,100"

注册表找到了,可分别在CURRENT_USER和LOCAL_MACHINE下找到。
虽然注册表找到了,仍然不能保证,是否有SQL SERVER存在,因为非法删除文件.另外,由于SQL SERVER对登录及数据库的权限设置,在没有密码的情况下很难访问的到。如果幸运,SA没有口令,可用生成ISQL进程的操作执行SQL 脚本。
ISQL -Sserver -Usa -P -ic:\mysql.sql -oc:\output
在脚本可写:
use master
go
select * from sysdatabase
go
select @@version
go等等查询语句。
另外,我想还可通过查找MSSQLSERVER服务进程来发现SERVER是否运行,存在。
但一些和SERVICE有关的函数我还没搞清。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧