I am having a problem with broken placeholders on a netapp NAS (7-mode) after the files (placeholders) were moved around in the file system.
FSAUtility is unable to recreate the placeholders so I was wondering if there is any way to find out what the share path or URL in SQL was when the file was first archived?
I've tried running FSAUtil but suspect that because the access point share has changed, as a result of the volume and folder moves, the util is unable to correlate the path in SQL
EV Version is 10.5.
FSA does not perform moved item reconciliation so items will appear in their original archived location. The following SQL query can be used to get the folder paths and file names. Replace the SET @ArchiveName entry with the name of the archive to limit the results.
-- Query start
DECLARE @ArchiveName nvarchar(75)
DECLARE @ArchiveID nvarchar(75)
DECLARE @FolderID nvarchar(75)
DECLARE @Idtransaction nvarchar(40)
SET @ArchiveID = NULL
SET @ArchiveName = 'windowsrecallarchivepoint'
SET @FolderID = NULL
SET @Idtransaction = NULL
WHEN LEFT(sp.properties,2) = '<?' THEN SUBSTRING(properties, (CHARINDEX('<filename>', properties)+10), (CHARINDEX('</filename>', properties)-(CHARINDEX('<filename>', properties)+10)))
WHEN LEFT(sp.properties,6) = 'FSA/3/' THEN SUBSTRING(properties, 7, CHARINDEX('/', properties, 7)-7)
WHEN LEFT(sp.properties,6) = '<C v="' THEN SUBSTRING (properties, 7, CHARINDEX('|',properties, 7)-7)
END as FileName,
JOIN EnterpriseVaultDirectory.dbo.Root r2 on r1.RootIdentity = r2.ContainerRootIdentity
JOIN EnterpriseVaultDirectory.dbo.archive on r1.RootIdentity = Archive.RootIdentity
JOIN EnterpriseVaultDirectory.dbo.ArchiveFolder on r2.RootIdentity = ArchiveFolder.RootIdentity
JOIN Vault on r2.VaultEntryId = Vault.Vaultid
JOIN Saveset ss on Vault.VaultIdentity = ss.VaultIdentity
JOIN SavesetProperty sp on ss.savesetidentity = sp.SavesetIdentity
r1.VaultEntryid= ISNULL(@ArchiveID, r1.VaultEntryid)
AND ArchiveName = ISNULL(@ArchiveName, ArchiveName)
AND r2.VaultEntryid = ISNULL(@FolderID, r2.VaultEntryId)
AND ss.IdTransaction = ISNULL(@Idtransaction, ss.IdTransaction)
Thank you veyr much Patrick, I don't have direct access to our SQL so have asked our DBA to get this done.
Once we have the "old" path, is there a SQL script or utility that would let us replace old with new?
It would be difficult to change these as it would require manual updates to all of the items that have changed. You could use the information to restore the items to the alternate folder using FSUtility -t or use EV Search to find the items.
Once the full item is in the new path it can be archived and a pointer associated with it in that folder. The item should be single instanced as it was already archived in the previous folder.
Yes, you can modify that line to only return results for the specific archive. All the other Declare and Set line should remain as is.
What is the issue?
The query is returning 0 rows when we run it.
Unfortuantely I don't have direct access to SQL so am reliant on our DBA team to do it and they are only runing exactly what I give them. Makes troubelshooting interesting...
I've tried a few variations of the ArchiveName, as well as not changing it at all, and whilst it parses correctly, each run returns 0 rows.
Which DB should this be run against please? I have run it against the DB that the archive belongs to. Should it rather be the Directory DB?
Thank you for taking the time with this, appreciated.
You should be able to get the correct ArchiveName from the Vault Console under Archives > File System. Also, you could set to value to NULL to see if it returns anything.
It should be run against the vault store that contains the FSA archived items.
We managed to extract the data but we are not seeing any difference between the existing path and the legacy archived path.
I'm trying to run a dtrace to capture a recall failure but we don't even see the recall attempt in the trace output. I was wondering if you could tell me what views I should add to a dtrace to confirm please?
I've been using the following: