基于SQL-DMO的服务器目录结构的访问实现
摘 要:摘要:客户端程序有时需要通过网络远程访问服务器的硬盘目录结构。文章基于SQL-DMO组件采用Visual FoxPro语言,利用SQLServer对象提供的EnumaBailableMedia方法及其扩展存储过程对该功能的实现进行了详细设计。经测试,效果良好。
关键词:关键词:SQL-DMO;服务器;目录结构
中图分类号:TP311 文献标识码:A 文章编号:
1.引言
随着网络应用的飞速发展,现在有非常多的客户端程序都是远程地跟数据库服务器连接进行前端业务操作,而对后台的数据库服务器的管理往往由数据库管理员直接在服务器端进行。但也有很多情况需要管理员在创建、备份和恢复数据库等维护操作时通过客户端远程进行,这个时候客户端程序则涉及到如何获取服务器的硬盘目录结构的问题。比如,在创建数据库时,程序应当允许可以选择数据库文件存放的服务器硬盘位置,在恢复数据库时,需要指定数据库备份所在服务器的目录以及备份所用的文件名称。
由于VFP(Visual FoxPro)在数据库应用中的历史地位及其数据处理的速度优势,其应用程序在很多政府机构和中小企业还在大量使用。所以,设计实现一个具有高度交互性、稳定的客户端VFP程序进行SQL Server数据库服务器的硬盘目录结构的访问对这些用户有着较强的现实意义。在VFP程序中可以使用GETDIR()和GETFILE()函数很容易地得到客户端本地目录和本地文件,但远程获取服务器端目录和文件则没有现成的函数可用,本文将通过SQL-DMO组件来实现服务器端的目录结构的访问。
2.SQL-DMO组件
SQL-DMO组件是分布式管理对象(SQL Distributed Management Objects)的简称,该对象是一个COM组件,由一个名为的动态链接库提供支持,是为编程人员准备的数据库服务器管理编程接口,也提供了所有可能需要的SQL Server管理功能。
使用xp_dirtre扩展存储过程取得指定目录下的子目录和文件列表信息的核心代码如下:
LOCAL nHandle,nResult
nHandle=SQLSTRINGCONNECT("Driver=SQL Server;Server=Student_lyg;"+;
"UID=sa;PWD=;DataBase=Master")
cSQL="EXEC xp_dirtree 'c:student',3,1" &&目录深度为3,文件深度为1
nResult=SQLEXEC(nHandle,cSQL,"NewDirCursor")
IF nResult>0
&& 输出目录和文件列表信息
SELECT NewD
irCursor
LIST FIELDS ALLTRIM(STRTRAN(Subdirectory,CHR(0),"")),Depth,File
ELSE
=MESSAGEBOX("读取服务器硬盘目录和文件信息失败!")
ENDIF
其中File字段为0的即为目录信息,为1的即为文件信息,而Depth表示了当前目录或文件的深度。
5 结束语
SQLSERVER对象的EnumaBailableMedia方法和扩展存储过程xp_availablemedia的功能完全相同,可以接收的参数也完全相同。要使用扩展存储过程xp_dirtree只能获得指定目录下的子目录信息,此时可以指定子目录深度为1,文件深度为0,类似GETDIR()函数;如要获得文件信息,可以指定子目录深度为1,文件深度也为1,类似GETFILE()函数,并在临时表中筛选File字段为1的信息即可。
参考文献:
[1]Microsoft -DMO Reference[EB/OL].[2012-07-10].zh-cn/.
[2]Microsoft ping SQL-DMO Applications[EB/OL].[2012-07-12].en-us/.
[3]编程实用大全[M].杜大鹏等译.北京:中国水利水电出版社,2003.
基金项目:教育部高职高专教育规划课题(编号:JZW590112052);连云港市教育科研“十二.五”规划课题(编号:C201111565)。
上一篇:DSP平台使用串口升级软件的实现