Lotus notes LotusNotes脚本:备份所有服务器数据库
今天我试图通过右键点击数据库->新建副本来复制数据库(设计和文档)。。。我看到数据库的新副本具有源数据库的最小维度(源数据库900mb和新副本170mb)。 我还看到,如果我访问这个数据库的新副本,大小将从170mb变为400mb(我想这是因为notes创建了索引…) 但我只需要复制数据库来创建备份,所以大小很重要,因为我必须每天备份,并且只在特定情况下才查阅数据库 因此,我构建了一个代理来执行此复制,但结果不一样,新的副本与源数据库具有相同的维度。 有没有技巧可以获得与右键单击数据库->新建副本相同的“压缩”。。。但是使用脚本代码? 我发布了我使用但没有压缩的代码:Lotus notes LotusNotes脚本:备份所有服务器数据库,lotus-notes,Lotus Notes,今天我试图通过右键点击数据库->新建副本来复制数据库(设计和文档)。。。我看到数据库的新副本具有源数据库的最小维度(源数据库900mb和新副本170mb)。 我还看到,如果我访问这个数据库的新副本,大小将从170mb变为400mb(我想这是因为notes创建了索引…) 但我只需要复制数据库来创建备份,所以大小很重要,因为我必须每天备份,并且只在特定情况下才查阅数据库 因此,我构建了一个代理来执行此复制,但结果不一样,新的副本与源数据库具有相同的维度。 有没有技巧可以获得与右键单击数据库->新建副
Dim Db As NotesDatabase
Dim Ws As New NotesUIWorkspace
Dim Session As New NotesSession
Dim DbDir As NotesDbDirectory
Dim AllDocs As NotesView
Dim SourceDb As NotesDatabase
Dim ArchiveDb As NotesDatabase
Dim SourceDoc As NotesDocument
Set Db=Session.CurrentDatabase
Set DbDir=Session.GetDbDirectory(Db.Server)
Set SourceDb = DbDir.GetFirstDatabase(DATABASE)
Do While Not SourceDb Is Nothing
Print"BackUp Database "+Cstr(SourceDb.FileName)
Gosub BackUpDatabase
Set SourceDb = DbDir.GetNextDatabase
Loop
Exit Sub
BackUpDatabase:
If SourceDb.IsOpen=False Then Call SourceDb.Open( "", "" )
Set ArchiveDb = SourceDb.CreateCopy( "", "C:\Test\"+Cstr(Day(Date))+"-"+Cstr(Month(Date))+"-"+Cstr(Year(Date))+"\"+SourceDb.FilePath)
Set AllDocs = SourceDb.CreateView( "@AllDocs", "SELECT @All" )
Set SourceDoc=AllDocs.GetFirstDocument
Do While Not SourceDoc Is Nothing
Call SourceDoc.CopyToDatabase(ArchiveDb)
Set SourceDoc=AllDocs.GetNextDocument(SourceDoc)
Loop
Call AllDocs.Remove()
Return
你所说的“压缩”只是“缺少”视图索引。
数据库大小包括:
Set ArchiveDb=SourceDb.CreateReplica(“,”C:\Test\“+Cstr(日))+“-”+Cstr(月(日))+“-”+Cstr(年(日))+“\”+SourceDb.FilePath)
如果在备份后保留该数据库,则可能需要使用以下代码更改数据库的副本id:
选项公共
选项声明
Const wAPIModule=“notes”Windows/32
输入API_TIMEDATE
第(1)条与第(1)条一样长
端型
输入API\u dbreplicinfo
ID作为API_TIMEDATE的ID,对于所有副本文件都是相同的
intFlags作为整数的复制标志
IntCutofInterval作为整数“自动复制切断”
作为API_TIMEDATE的复制截止日期的截止
端型
声明私有函数NSFDbOpen Lib wAPIModule别名“NSFDbOpen”_
(ByVal P作为字符串,hDB作为长)作为整数
声明私有函数NSFDbClose Lib wAPIModule别名“NSFDbClose”_
(ByVal hDB等长)作为整数
声明私有函数NSFDBReplicationGet Lib wAPIModule别名“NSFDBReplicationGet”_
(ByVal hdb作为Long,hdbr作为API_dbreplicinfo)作为整数
声明私有函数nsfdbreplicationset Lib wAPIModule别名“nsfdbreplicationset”_
(ByVal hdb作为Long,hdbr作为API_dbreplicinfo)作为整数
子ChangeReplicaID(strServer作为字符串,strFilePath作为字符串,strReplicaID作为字符串)
作为整数的Dim intRc
变暗lngDb为长
Dim RepInfo作为API_DBREPLICAINFO
如果strServer=“”,则
intRc=NSFDbOpen(strFilePath,lngDb)
其他的
intRc=NSFDbOpen(strServer&“!!”和strFilePath,lngDb)
如果结束
如果intRc为0,则
MessageBox“无法打开数据库”
出口接头
如果结束
intRc=nsfdbreplicationfoget(lngDb,RepInfo)
如果intRc为0,则
MessageBox“无法获取复制信息”
出口接头
如果结束
RepInfo.ID.lngInnards(1)=Val(“&H”+左$(strReplicaID,8))
RepInfo.ID.lngInnards(0)=Val(&H“+Right$(strReplicaID,8))
intRc=nsfdbreplicationfoset(lngDb,RepInfo)'深呼吸…:-)
intRc=nsfdbreplicationfoget(lngDb,RepInfo)
如果intRc为0,则
MessageBox“设置后无法获取复制信息”
其他的
MessageBox“成功”
如果结束
端接头
但我能给出的最好建议是:使用专业的备份软件来完成这项工作