PROBLEM
Click on a site link in the Sites I’m following section and get the message “We hit a snag. This link doesn’t work anymore, likely because the item was moved or deleted. You might have luck searching for it and following it in its new location”.
SOLUTION
Ensure that the application pool service account that your My Sites are running under have SPDataAccess permissions on the content database that contains the site whose link you clicked on.
FURTHER DETAILS
I followed a site in SharePoint 2013, then went to the Sites page and clicked on the site link in the Sites I’m following section and got the message “We hit a snag. This link doesn’t work anymore, likely because the item was moved or deleted. You might have luck searching for it and following it in its new location”
I was able to copy the link and open it another browser tab successfully so it hasn’t moved or been deleted. So technically “we” didn’t hit a snag, “you” SharePoint hit a snag and took me along for the bumpy ride.
Even with the diagnostic logging levels turned up to verbose for everything I could not find any indication of a problem in the trace or event logs. I am not sure if this is just my development environment suffering from this lack of verbosity or this is something more widespread. I suspect the latter as I was not able to find anything in the logs at a customer’s farm suffering from the same snag. I finally tracked down the issue thanks to Derek Campanile.
My Portal web application and MySite Host web application use different service accounts for the application pools in IIS as ideally they should do.
It seems that when you click on the link in Sites I’m following SharePoint tries to access the content database that the site is stored in. When I checked in SQL Server for the My Sites service account…
…I found that the service account did not have permissions to access to the content database
I gave the service account SPDataAccess permissions…
…and was able to successfully click on the link to my followed site.
This means that every time you add a new content database to your farm you must manually go and assign SPDataAccess permissions to the My Sites application pool service account assuming you are following best practice and using a different service account.
I’m sure Microsoft has a good reason for complicating things for the lowly SharePoint administrator, but I can’t imagine what it is right now.