在VFP里来操作和管理SQL

在VFP里来操作和管理SQL,第1张

在VFP里来操作和管理SQL,第2张

使用VFP和SQL SERVER作为系统的网民越来越多。如何从VFP操作或管理SQL SERVER也成为很多人关心的问题。SQL SERVER的数据操作可以用view,SPT或者ADO来完成,但是服务器本身的管理好像只用SPT来发一些命令。实际上,微软已经为客户端开发了一整套操作SQL SERVER的工具,这就是SQL-DMO(分布式管理对象)。这是一组COM组件,可以用于各种语言,包括VFP。
我准备花点时间写一些这方面的入门文章,然后做个例子,算是我过了MCDBA之后送给大家的礼物。以下介绍和示例是针对SQL SERVER 2000和VFP7的。

使用SQL -DMO的必要性

VFPER开发的大部分程序都是中小型系统,因为这是VFP最适用的范围。然而,在许多情况下,这样的系统没有专业的IT人员来维护客户端,更不用说专门的DBA了。对于使用SQL SERVER的系统来说,带来了一些问题。SQL SERVER是一套大型的专业数据库软件,经常需要维护和清理。但是我们系统开发人员不可能总去找用户做维护工作,尤其是商业软件,这是很大的成本。如果能把SQL SERVER的维护放到自己的程序里,甚至把SQL SERVER的安装无缝的纳入到自己程序的安装包里,相信大家都会很开心。DMO的功能可以满足我们的需求。通过它,您可以从程序中通过命令操作SQL SERVER:停止/启动服务、构建数据库和表、添加用户和权限、备份/恢复数据库、导入/导出/发布数据...DMO的功能是用代码完成我们在企业管理器中可以完成的所有功能。

2.微软的桌面数据库引擎

我们都知道SQL SERVER 2000有四个版本:个人版、开发者版、标准版和企业版。其实还有一个版本,就是桌面数据引擎(DDE)。DDE几乎拥有
SQL SERVER标准版和企业版的所有功能,只有少数不常用的功能无法支持。DDE与其他版本的区别在于,DDE没有图形管理界面、企业管理器、查询分析器等工具。其管理主要通过DMO或特殊API。另一个好处是提供了安装程序,可以直接添加到第三方软件中进行安装。每个版本的SQL SERVER光盘都有DDE,可以通过运行MSDE目录下的安装程序来安装。至于如何添加到自己的程序中并安装,可以通过查看SQL SERVER的帮助文件找到。
DDE的局限性在于只适用于中小型系统(比如同时连接运行大型SQL命令的用户不超过5个)。如果有许多用户同时访问,DDE会比普通的SQL SERVER慢。
这样,DDE+DMO就可以实现上述所需的功能。这种方法甚至可以防止用户知道您正在将SQL SERVER用作数据库。当然,DMO不仅能操作DDE,它还能操作所有版本的SQL SERVER。

三。DMO的安装

实际上,SQLDMO.DLL DMO只是一个DLL文件。具体位置在C:\ Program Files \ Microsoft SQL Server \ 80 \ Tools \ Binn目录下,同一个目录下还有一个帮助文件Sqldmo80.hlp。如果你不能在程序中使用DMO,找到这个DLL文件并注册它。另外,在目录C:\ program files \ Microsoft SQL Server \ 80 \ tools \ dev tools \ samples \ SQLDMO中,有SQLDMO的例子,但都是在VB和VC++中。VB的例子非常接近VFP。

四。与DMO的初步接触

在这里写几个简单的句子,看看DMO的力量。这些命令可以直接在命令窗口中逐行测试,只是用它们来显示数据库的信息。至于添加数据库、数据表、备份和恢复等更复杂的功能,还得在实例中完成。
oSERVER = CreateObject(" sqldmo . SQL server ")& &建立一个服务器对象
oserver.connect ("snoopy "," sa "," 778899")&&连接到您的服务器
?O.databases.count & &显示服务器上数据库的总数
?O.databases.item (1)。name & &显示第一个数据库的名称
odb = oserver . databases(" pubs ")& &建立数据库对象
?ODB。Tables.Count &&显示库中表的数量
otable = odb . tables(" titles ")& &创建表对象
?OTable。Rows &&显示表格中的记录数
?OTable。Columns.Count &&显示表中的列数
**显示列的属性
?oTable。列(1)。名称
?oTable。列(1)。键入
?oTable。列(1)。数据类型
?oTable。列(1)。身份
?oTable。列(1)。IsPrimaryKey

备份和恢复数据库
oSERVER = CreateObject(" sqldmo . SQL server ")& &建立服务器对象
oserver.connect ("snoopy "," sa "," 778899") &&连接到您的服务器
* * backup
obackup = CreateObject(" sqldmo . backup ")& &建立备份对象
o backup . database = " pubs " & &指定备份数据库
o backup。Password="8899" &&给备份文件设置密码
o backup . files = " d:\ temp \ pub back . dat " & &指定目标文件
o backup . SQL backup(Oserver)& &运行备份命令,非常快
* *注意:备份数据时,默认方式是追加。可以加一句
obackup.initialize =。这将覆盖原始文件。或者为每个备份使用不同的文件名,例如,将日期作为文件名的一部分。
**备份恢复
or estore = CreateObject(" sqldmo . restore ")
or estore . database = " pubs "
or estore . files = " d:\ temp \ pub . dat "
or estore . SQL restore(oserver)& &尝试无密码首先,备份失败
or estore . password = " 8899 "
or estore . SQL restore(oserver)
SQL server提供了几种数据库备份
完整备份是整个数据库的备份,差异备份只是完整备份后数据库中的新变化。当数据库较大时,完整备份需要空时间,可以根据情况定期进行,如每周或每月完整备份。其他时间可用于差异备份,如每天一次或半天一次,或与日志备份结合使用。备份是直接备份数据库的数据和日志文件。和操作系统中的备份是一样的。
还原时,先还原完整备份,再还原最后一次差异备份即可。如果有日志备份,还需要还原差异备份后的日志备份。
备份类型由备份对象的操作属性决定。
o备份。Action=0 &&参数:0-完全备份,1-差异备份,2-文件备份,3-日志备份

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 在VFP里来操作和管理SQL

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情