VB程序如何实现SQL-DMO中的 作业修改 功能
在我的SQL Server客户端使用企业管理器,进行手动备份数据库,可以直接选择数据库服务器的本地路径。
我的程序需要提供一个自动备份功能(我使用SQL-DMO对象,创建自动备份作业) ,需要在程序UI上可以修改备份路径和备份时间,但是如果数据库服务器不共享文件夹的话,我如何设置备份路径?而且就算是服务器共享了,但是我的程序取到的路径是“\\dbserver\d:\databaseb_backup...”类似这样的路径,这样不行。sql server 能接受的 备份路径格式只能是 “D:\..”(这个可能还好解决,截去前一段应该可以,但是这违背了程序的初衷,因为路径修改受限于服务器的共享路径)
调用API函数?查过,好像不太对路,期待解决方法,多谢!
问题点数:100、回复次数:11Top
1 楼hdhai9451(☆新人类☆)回复于 2005-03-04 17:42:44 得分 0
這樣的路徑不對\\dbserver\d:\databaseb_backup...”
應該這樣:
\\dbserver\databaseb_backup...
而且那個網絡文件夾還要完全共享Top
2 楼hdhai9451(☆新人类☆)回复于 2005-03-04 17:44:13 得分 20
CREATE procedure databackup as
DECLARE @path varchar(50)
declare @week varchar(10)
declare @filename varchar(60)
SET DATEFIRST 1
set @path='f:\backup\'
set @week= case DATEPART(dw,getdate())
when 1 then '星期一'
when 2 then '星期二'
when 3 then '星期三'
when 4 then '星期四'
when 5 then '星期五'
when 6 then '星期六'
when 7 then '星期天'
end
set @filename=@path+@week+'\datafull'+convert(varchar(10),getdate(),126)+'.bak'
backup database new_ks to disk=@filename
GO
這是一個備份的存儲過程,你把它放到job裡,讓它定時運行
Top
3 楼LoveLwn(小P)回复于 2005-03-04 18:04:23 得分 5
CREATE procedure databackup as
DECLARE @path varchar(50)
declare @week varchar(10)
declare @filename varchar(60)
SET DATEFIRST 1
set @path='f:\backup\'
set @week= case DATEPART(dw,getdate())
when 1 then '星期一'
when 2 then '星期二'
when 3 then '星期三'
when 4 then '星期四'
when 5 then '星期五'
when 6 then '星期六'
when 7 then '星期天'
end
set @filename=@path+@week+'\datafull'+convert(varchar(10),getdate(),126)+'.bak'
backup database new_ks to disk=@filename
GO
UpTop
4 楼cyberjacky(狼心)回复于 2005-03-04 18:08:35 得分 0
hdhai9451:我随便写的,路径的确错了,^_^
你说的不错,但关键是“需要在程序UI上可以修改备份路径”,我如何在UI上实现,类似sql server2000企业管理器中可以自由选择数据库服务器的本地路径那样,其实关键就是如何在客户端像企业管理器那样访问服务器的硬盘。前辈,望指点!Top
5 楼cyberjacky(狼心)回复于 2005-03-04 18:17:42 得分 0
up 不要沉底了 :)Top
6 楼cyberjacky(狼心)回复于 2005-03-05 09:03:38 得分 0
up
help ^_^Top
7 楼hglhyy(為人民币服务!)回复于 2005-03-05 10:23:56 得分 5
\\dbserver\d:\databaseb_backup...”
你就肯定有访问dbserver机器的权限吗?
一楼说得对,用共享文件夹!Top
8 楼cyberjacky(狼心)回复于 2005-03-05 14:48:53 得分 0
我的意思: 你应该在客户端的企业管理器上操作过备份吗吧? 那里可以选择dbsever上的任意盘符,而我在我自己程序界面如何访问?
也许有可能是因为我在客户端用了什么高级用户可以完全控制dbsever?应该不太可能。Top
9 楼zjcxc(邹建)回复于 2005-03-05 15:19:43 得分 70
用sql语句,调用sql的扩展存储过程就可以得到服务器的目录及文件信息了,涉及到的扩展存储过程如下:
--得到磁盘信息
exec master..xp_fixeddrives
--得到服务器指定目录下的目录及文件更表
exec master..xp_dirtree @path='c:\',@depth=1,@file=1 --参数:目录名,目录深度,是否显示文件
dbcc checkprimaryfile (N'C:\test\MRP_DATA.MDF', 3)
--检查指定文件是否存在(是否覆盖备份文件可以利用它来检测并由用户确认)
exec master..xp_fileexist 'c:\boot.ini'
--显示文件详细信息
exec master..xp_getfiledetails 'c:\boot.inia'Top
10 楼zjcxc(邹建)回复于 2005-03-05 15:21:35 得分 0
楼主可以自己调用上述扩展存储过程,结合程序设计一个类似企业管理器的目录及文件选择窗口给用户
sql企业管理给出的窗口也是调用上述几个扩展存储过程实现的Top
11 楼cyberjacky(狼心)回复于 2005-03-05 15:58:48 得分 0
多谢邹大哥,昨天我给你发了关于这个问题的短消息,我当时觉得难度就在这里“结合程序设计一个类似企业管理器的目录及文件选择窗口给用户” 因为我以为要做到像企业管理器那样的“目录及文件选择窗口”会比较难... 你列出来的几个扩展存储过程应该可以,我先试试,谢谢!就结贴吧!^_^Top




