I’ll add another one to that, whilst we don’t use access we have a separate database which just is full of views that access our epicor database. Along the lines of
CREATE VIEW Project
AS
SELECT * FROM Epicor905.dbo.Project WITH (NOLOCK)
A good example is if we want to build a SSRS report which is run from outside Epicor or a Crystal one for that matter the datasets look at our EpicorViews database and not the production database. It also can help with security. We also refernece this database when we want to create and external BAQ. Get SQL to do the work and just present a nice flat dataset to the designer (E9 for us though).
Another thing we do is run a snapshot replication on a nightly basis for reporting that is ok to be a day behind. We have a series of reports that run against that data.
I would not be keen on having a separate schema in the Epicor database though. Having it is a totally separate database ensures there are never any support quibbles when they request a copy of your database and they see you have a million and one items in the database that are not Epicor.