- 论坛徽章:
- 1
|
在程序中管理和控制MS SQLServer
转自http://www.elu365.com/article/list.asp?id=119
通常我们都是用SQL Server Enterprise Manager来管理SQL Server服务器,但有时需要在程序中判断SQL Server服务是否已经启动,如果没有启动,最好还能够启动它。
那么怎么实现呢?用NT/2000关于Service的API来实现存在着许多不足之处,经过研究,发现了SQL Server提供的SQL-DMO API(SQL Distributed Management Objects),通过它可以实现SQL Server Enterprise Manager所有的功能,哈,真是令人兴奋!
对于使用VB、C/C++的人来说这是很容易的,因为MicroSoft不但提供了相关的文件,还有例程和帮助文件,PB、Delphi怎么办呢?看MicroSoft的资料,凡是支持OLE的开发工具都可以通过OLE来开发相关的程序。
以下是一个例程:
integer result
OLEObject loo_SQLServer
loo_SQLServer = CREATE OLEObject
result = loo_SQLServer.ConnectToNewObject(\"SQLDMO.SQLServer\"
if result <> 0 then
messagebox(\'提示\',\'创建OLE对象时产生错误\')
return
else
loo_SQLServer.name = \'ServerName\'
if loo_SQLServer.Status = 3 then//服务停止
loo_SQLServer.Start(false,\'ServerName\',\'sa\',\'pwd\')
elseif loo_SQLServer.Status = 2 then//服务暂停
loo_SQLServer.Continue()
end if
//启动之后再次判断是否成功
if loo_SQLServer.Status = 2 or loo_SQLServer.Status = 3 then
messagebox(\'错误\',\'启动服务失败\')
end if
end if
loo_SQLServer.DisconnectObject()
destroy loo_SQLServer
可以看出我们只要创建一个SQLDMO.SQLServer对象,就可以通过他的方法来实现想要的功能了。SQLDMO还有很多Object,我们都可以通过OLE来实现想要的功能,像备份、恢复、发布、订阅等等,只要是SQL Server Enterprise Manager的功能,都能实现。具体的资料可以看SQL Server的Online Book和Binn目录下的SQLDMO.HLP。
不过,用这种方式需要安装SQLServer客户端(MicroSoft说的),但是我们在发布PB程序时不是只需要SQLServer的两个文件即可吗?所以我觉得只要把SQLDMO.dll及相关文件安装并注册了就可以了,我用eXescope看了一下它还用到几个SQLServer提供的DLL,懒的再分析了,那位知道了简单的发布方法要告诉我哦。
另外,在Delphi中用CreateOLEObject(\"SQLDMO.SQLServer\"),应该一样可以控制、管理SQLServer服务器,没试过,有时间再说吧!好了不说了,在此只是抛砖引玉,大家自己研究吧! |
|