Hi,
Please advisehow to deplete the FRS storage area
When the current usage rate of FRS is 90% or more, it is urgent to respond. · If you erase only the old FRS file, will the report be displayed without problems? · Please tell me specifically how to identify the report from FRS file name with the oldest update date. · In this case, is there any way to reduce the capacity of used disks other than report inventory and file compression?
Using query builder, the following query:-
SELECT si_name, si_files FROM ci_infoobjects WHERE si_kind=‘webi’;
produces all many files.
But, is there any way to use SDK to pull out a list based on repository update date in one go?
First, it’s never a good idea to just delete files in the FRS. Do it the right way and delete the report from CMC or InfoView.
The following Excel VBA macro can help you. It will display the name, path, size, creation date, last modification date, and instance indicator of all WebI reports in the system. You can use that to identify the reports by age or size that you want to delete.
You could alter the program to automatically delete documents that meet certain criteria, but I’ll leave that to you…
Option Explicit
Dim oInfostore As infostore
Sub duh()
Dim oSessionMgr As CrystalEnterpriseLib.sessionMgr
Dim oEnterpriseSession As CrystalEnterpriseLib.enterpriseSession
If oInfostore Is Nothing Then
Set oSessionMgr = New CrystalEnterpriseLib.sessionMgr
Set oEnterpriseSession = oSessionMgr.Logon(" <user id> ", " <password> ", " <cms> ", "secEnterprise")
Set oInfostore = oEnterpriseSession.Service("", "InfoStore")
End If
Dim startID As Long: startID = 0
Dim c As Range: Set c = Range("a1")
Dim oIOs As InfoObjects
Dim oio As InfoObject
Do
Set oIOs = oInfostore.Query("select si_id,si_name,si_files,si_instance,si_creation_time,si_update_ts from ci_infoobjects where si_kind = 'webi' and si_id > " & startID)
For Each oio In oIOs
c.Value = oio.title
c.Offset(0, 1) = getParent(oio)
c.Offset(0, 2) = getTotalSize(oio)
On Error Resume Next
c.Offset(0, 3) = oio.Properties("SI_CREATION_TIME").Value
c.Offset(0, 4) = oio.GetUpdateTimeStamp
c.Offset(0, 5) = oio.Instance
On Error GoTo 0
Set c = c.Offset(1, 0)
c.Activate
startID = oio.ID
Next
Loop While oIOs.Count > 0
End Sub
Function getParent(oio As InfoObject) As String
Dim tempIO As InfoObject: Set tempIO = oio
Do
Set tempIO = tempIO.Parent
getParent = tempIO.title & "/" & getParent
Loop Until tempIO.parentID = 0
End Function
Function getTotalSize(oio As InfoObject) As Long
Dim f As CrystalInfoStoreLib.File
If Not (oio.Files Is Nothing) Then
For Each f In oio.Files
getTotalSize = getTotalSize + f.Size
Next
End If
End Function
First, let me say that you should never just delete files from the FRS. There will be orphaned references to those files left in your CMS repository database that will still be pointing to those files.
This depends on what files you delete. If you delete anything out of the Input side of the FRS, then the reports will be gone because this is where the report templates and universes are stored. If you delete a universe file, that will cause all of the reports that use that universe to fail. If you delete files from the Output side of the FRS, these are report instances and you would just lose report history.
You could try using Query Builder to look up the file name but Joe’s script or one of the Excel spreadsheets available in BOB’s Downloads would be a better option. You may have to edit the spreadsheets to use your version of the resource files but I can verify that they still work up to BI4.1sp7.
Yes, use the Limit functionality in Business Objects to limit the number of report instances that are retained for the reports. This can be set at either a top folder level, a public folder, or individual reports. Don’t forget to set limits on Personal Folders and Inboxes as well. Personal Folders and Inboxes would most likely need to be set at the top folder level so you wouldn’t have to set this anytime a new user is added, especially if you use some security other than Enterprise security. For Public Folders, you probably want to set the report limits at the folder level. This allows for different retention for different user areas but is more manageable than trying to set them at the report level.
We have limits set in our non-production environments at all of the Top Level folders. We limit report instances to no more than 30 instances and no longer than 60 days. The limiting functionality automatically maintains this so we don’t have to do anything manually. Production is a different matter because our users think they need to keep their report history for ever.